socket.io:从服务器向服务器发出消息(!)

时间:2012-07-13 15:31:57

标签: node.js socket.io

我很乐意从服务器向客户端发送消息,也可以从客户端向服务器发送消息。但是,我似乎需要从服务器本身发送(广播)消息到(服务器)套接字 - 我不知道如何去做。

案例是服务器(通过Redis订阅)了解可能非常多的客户端的子集需要被发送消息。每个服务器端套接字可以自行确定是否需要触发。我只是不知道如何让他们知道他们必须进行检查(可能与来自客户端(?)的消息的“正常”方式大致相同)。

FWIW可以通过仅使用handshakeData(以及其他非socket特定于实例的服务器端结构)来进行检查。如果有办法从外部获取handshakeData',那么它也是可能的;但绝不是真的很漂亮。

任何想法/指点任何人?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我似乎终于得到了它(通过调试socket.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);
}