【问题标题】:Emitting socket.io messages from plain node.js server从普通 node.js 服务器发出 socket.io 消息
【发布时间】:2013-12-19 09:13:13
【问题描述】:

我有一个要求,我需要在我的节点服务器从普通 node.js 服务器调用后端的 rest 服务到套接字服务器之前发出 socket.io 消息。我尝试想象我正在尝试做的事情:

Client(sends data) --> 
       |->Node.js server (sends data to socket.io server --> Backend rest service
                  |->-- socket.io server

为此,我已经在我的普通节点 server.js 中尝试过这个

var io = require('./socket.io.js');

http.createServer(function(request,response) {
   var restUrl; //Data I am getting from request

   //Socket.io server information
   var options = {
        host: 'localhost',
        port: '3000'
    };

   var socket = io.connect(options);
    socket.on('connect', function () {
         socket.send(restUrl);
     });
}

但它不起作用,给我这个错误:

TypeError: Cannot read property 'port' of undefined
at Socket.isXDomain (E:\Pradeep\BaaS\socket.io.js:1877:31)
at Socket.handshake (E:\Pradeep\BaaS\socket.io.js:1627:14)
at Socket.connect (E:\Pradeep\BaaS\socket.io.js:1699:10)

谁能指导我做错了什么?基本上我正在尝试监视我的节点服务器的实时活动。任何指导或帮助表示赞赏。

【问题讨论】:

    标签: javascript node.js sockets socket.io


    【解决方案1】:

    您需要的是 node.js 服务器中的 socket.io 客户端。获取模块npm install socket.io-client,然后使用以下示例 -

    var http = require('http');
    var io = require('socket.io-client');
    var connected = 0;
    
    var socket = io.connect('localhost', {
      port: 3000
    });
    
    socket.on('connect', function(){
      console.log("connected");
      connected = 1;
    });
    
    http.createServer(function (req, res) {
      if(connected == 1)
        socket.emit('info', {my:'data'});
    }).listen(1337);
    

    【讨论】:

      【解决方案2】:

      恐怕这是为 node.js 设置 socket.io 的完全错误的方式。 正确的做法如下:

          var app = require('express').createServer()
        , io = require('socket.io').listen(app);
      
      app.listen(80);
      
      app.get('/', function (req, res) {
        res.sendfile(__dirname + '/index.html');
      });
      
      io.sockets.on('connection', function (socket) {
        socket.emit('news', { hello: 'world' });
        socket.on('my other event', function (data) {
          console.log(data);
        });
      });
      

      来源:http://socket.io/#how-to-use

      【讨论】:

      • 您好,我没有设置服务器,而是尝试从 node.js 服务器向 socket.io 服务器发送消息。
      • 上面的代码确实会发出一条消息。在此处阅读文档:[链接]socket.io/#how-to-use
      • 是的,它确实会发出,但它是一个套接字服务器,我有那个代码。我想从普通的 Node.js 服务器调用 socket.io。
      猜你喜欢
      • 1970-01-01
      • 2022-01-19
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多