socket.io - 如何向所有打开的套接字广播消息

时间:2013-01-27 13:49:20

标签: socket.io

我想通过非套接字相关事件向所有打开的套接字广播消息,例如由于超时。我该怎么做呢?我应该保留所有打开的套接字的数组并逐个发送消息吗?还有更好的方法吗?

注意:socket.io指南中的广播示例发送广播消息以响应套接字连接,因此它具有套接字句柄。即便如此,它说

  

广播意味着向除了启动它的套接字以外的所有人发送消息。

修改 澄清我的问题 - 我想向所有打开的套接字“发送消息”。此操作不是由任何套接字触发的,因此没有“此套接字”。例如,服务器上的某些业务逻辑决定现在执行订单。需要将此信息发送到所有打开的套接字。最好的方法是什么? (这不是“广播”,因为socket.io定义它。)

2 个答案:

答案 0 :(得分:2)

所以基本上你需要将所有连接的客户端连接到你的套接字

var clients = io.sockets.clients(); // This returns an array with all connected clients

for ( i = 0; i < clients.length; i++ ) {
    clients[i].emit('event', { data: 'message' });
}

这会向所有连接的客户端发出。

答案 1 :(得分:0)

socket.broadcast.emit('event name', { data : 'your data' });

除了这个插座外,它将广播到所有打开的套接字。