一尘不染

使用socket.io和node.js将消息发送到特定客户端

javascript

我正在使用socket.io和node.js,直到现在看起来还不错,但我不知道如何从服务器向特定客户端发送消息,如下所示:

client.send(message, receiverSessionId)

但是无论是.send()还是.broadcast()方法似乎都无法满足我的需求。

我发现一种可能的解决方案是,该.broadcast()方法将不发送消息的SessionId数组作为第二个参数,因此我可以将此时连接了所有SessionId的数组传递给服务器,除了那个我希望发送邮件,但是我觉得必须有一个更好的解决方案。

有任何想法吗?


阅读 264

收藏
2020-05-01

共1个答案

一尘不染

好吧,您必须为此赢得客户(惊喜),您可以采用以下简单方法:

var io = io.listen(server);
io.clients[sessionID].send()

我怀疑这可能会中断,但是它总是有io.clients可能被更改,因此请谨慎使用以上内容

或者您自己跟踪客户端,因此将它们添加到侦听器中自己的clients对象中,connection然后在disconnect侦听器中将其删除。

我将使用后一种,因为根据您的应用程序,您可能仍希望在客户端上具有更多状态,因此clients[id] = {conn: clientConnect, data: {...}}可以完成类似的工作。

2020-05-01