套接字IO:检索特定连接客户端的套接字的最佳方法

时间:2014-06-06 12:42:31

标签: javascript node.js socket.io mean-stack

我正在尝试使用MEAN Stack (不使用redis)构建聊天服务器,它使用socket.io启用实时聊天。对于私人消息,我想实现socket.io的内置“房间”功能。流程如下:

User1想要与User2开始对话,因此User1会发出服务器捕获的事件。 在服务器中,我将此对话存储在数据库中,并将User1加入到一个房间。如果User2在线,那么我也将 User2加入此房间。为实现此步骤,我需要访问User2的套接字。 经过大量的研究,我发现这种方法可以将每个连接用户的“套接字”存储在一个数组(或字典)中。 我想知道是否有任何其他方法来检索套接字而不是将其存储在数组中。

2 个答案:

答案 0 :(得分:0)

不,没有更好的方法,除非你为这两个用户使用不同的命名空间,但我不认为这是你的情况。

答案 1 :(得分:0)

几年前,我使用faye实现了一个基本的POC(概念证明)。

就我而言,我为活跃用户创建了一个独特的频道。通道名称与mongo(_id)中的唯一用户标识符相同。这使我能够向正确的用户发送消息,而无需存储有关其连接的信息。

请注意,我没有进行任何性能测试,而且您需要打开很多连接。

我通过向频道广播使用faye做了类似的实现,在这种情况下,我确实存储在连接到特定频道的数据库中。