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

Socket IO : Best way to retrieve socket of specific connected client

本文关键字:套接字 客户端 最佳 方法 连接 IO 检索      更新时间:2023-09-26

我正在尝试使用MEAN Stack建立一个聊天服务器(不使用redis),它使用套接字。IO用于启用实时聊天。对于私人消息传递,我想实现socket.io内置的"房间"功能。流程如下:

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

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

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

在我的例子中,我为活跃用户创建了一个唯一的通道。日志含义通道名与mongo (_id)中的唯一用户标识相同。这使我可以向正确的用户发送消息,而不必存储有关他们的连接的信息。

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

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