socket.io:从服务器发送消息到服务器(!)

我可以愉快地从服务器发送消息到客户端,也从客户端发送到服务器。 然而,我似乎需要从服务器本身发送(广播) 消息到(服务器)套接字 – 我不知道该怎么去做。

这种情况是,服务器学习(通过Redis订阅)可能非常多的客户端的子集需要发送消息。 每个服务器端套接字可以自行决定是否需要触发。 我只是不知道如何让他们知道他们必须做这个检查(可能和客户端(?)的消息一样)。

FWIW可以通过仅使用handshakeData(以及其他非套接字实例特定的服务器端结构)进行检查。 如果有办法从外部获得握手数据,这也是一种可能性; 但绝不是真的很漂亮。

任何想法/指针的人?

当我遇到类似的问题时,我发现会有一个标准的nodeJS特定的解决scheme。 我发现了EventEmitter

http://nodejs.org/api/events.html#events_class_events_eventemitter

我似乎已经得到它(通过debuggingsocket.io代码)。

在消息处理程序中获取有问题的套接字,并设置带有事件和其他属性(通常是具有附加信息的“数据”对象)的“params”数组。 用这两个调用socket.$emit.apply(socket, params)

在实际的代码中:

 for (var socketId in io.namespaces['/mynamespace'].sockets) { var socket = io.namespaces['/mynamespace'].sockets[socketId]; var params = ['test event', {'foo': 'bar'}]; socket.$emit.apply(socket, params); }