繁体   English   中英

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

[英]Emitting socket.io messages from plain node.js server

我有一个要求,在此之前,我的节点服务器需要从普通的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)

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

您需要的是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);

恐怕为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM