我想通过非套接字相关事件向所有打开的套接字广播消息,例如由于超时。我该怎么做呢?我应该保留所有打开的套接字的数组并逐个发送消息吗?还有更好的方法吗?
注意:socket.io指南中的广播示例发送广播消息以响应套接字连接,因此它具有套接字句柄。即便如此,它说
广播意味着向除了启动它的套接字以外的所有人发送消息。
修改 澄清我的问题 - 我想向所有打开的套接字“发送消息”。此操作不是由任何套接字触发的,因此没有“此套接字”。例如,服务器上的某些业务逻辑决定现在执行订单。需要将此信息发送到所有打开的套接字。最好的方法是什么? (这不是“广播”,因为socket.io定义它。)
答案 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' });
除了这个插座外,它将广播到所有打开的套接字。