从普通node.js服务器发出socket.io消息

时间:2013-12-19 09:13:13

标签: javascript node.js sockets socket.io

我有一个要求,我需要在节点服务器从普通node.js服务器调用后端的休息服务到套接字服务器之前发出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)

任何人都可以指导我做错了什么吗?基本上我试图监控我的节点服务器的实时活动。任何指导或帮助表示赞赏。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

我担心为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