触发nodeJS socket.io服务器以通过端口80进行广播

时间:2011-10-18 08:08:57

标签: php node.js socket.io

实时更新机制:用户写入 - > php将其保存在mysql db中 - > php发送信息给nodeJS - > nodeJS发送更改所有订阅者 - >其他人可以实时注意到它。

Socket.io服务器运行良好并在端口8080上运行。我在端口80上运行节点http服务器。如何在http服务器上获取触发器消息并将消息发送到所有socket.io客户端?

var io = require('socket.io').listen(8080);

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Message Broadcast\n');
  console.log("Message Sent");

  //DOES NOT SEEM TO WORK, error
  io.broadcast("Messages");

  //No error but no messages
  io.emit("Message");

}).listen(80, "0.0.0.0");


/**
Other socket.io code which works well..
....

1 个答案:

答案 0 :(得分:2)

在Socket.IO 0.7中,您应该使用以下内容代替发送到没有特定套接字引用的所有连接套接字:

io.sockets.send("Messages")

请注意,这与broadcast不同,因为它会发送到所有套接字,而发起连接的套接字 - 当然您需要发送套接字引用,这就是您当前代码的原因不够。

来自维基页面的引用:Socket.IO/Wiki

  

如果您想向所有人发送消息,可以参考io.sockets

     

io.sockets.send('message');

     

io.sockets.emit('event');