4

由于非套接字相关事件(例如超时),我想向所有打开的套接字广播一条消息。我该怎么做呢?我应该保留所有打开的套接字的数组并一个一个地向它们发送消息吗?有没有更好的办法?

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

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

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

4

2 回答 2

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' });
}

这将发送给所有连接的客户端。

于 2013-01-28T07:26:00.203 回答
0
socket.broadcast.emit('event name', { data : 'your data' });

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

于 2013-01-27T17:21:22.753 回答