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

Javascript Socket IO:检索特定已连接客户端的套接字的最佳方法,javascript,node.js,socket.io,mean-stack,Javascript,Node.js,Socket.io,Mean Stack,我正在尝试使用MEAN Stack(不使用redis)构建聊天服务器,它使用socket.io启用实时聊天。对于私有消息,我想实现socket.io的内置“room”功能。流程如下: User1希望启动与User2的对话,因此User1发出一个事件,服务器将捕获该事件。 在服务器中,我将此对话存储在数据库中,并将User1加入到一个文件室中。如果User2在线,那么我也会加入到这个房间。为了实现这一步,我需要访问User2的套接字。 经过大量研究,我发现这种方法可以将每个连接用户的“套接字”存储

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

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

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

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

在我的例子中,我为活跃用户创建了一个独特的频道。频道名称与来自mongo的唯一用户标识符相同(\u id)。这允许我向正确的用户发送消息,而不必存储有关其连接的信息

请注意,我没有做任何性能测试,您需要打开很多连接

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