Node Js, websockets 保存通道中的连接

Node Js, websockets save connections in channels

您好,我正在使用带有节点 js 服务器的 websockets,npm 模块是 ws。我有一个数组,我在其中保存了所有连接,但现在我必须将它们分开,所以我做了这样的多维数组:

users[channel1][user_id1] = ws_user_id1_connection

问题是当我在多个渠道中有 1 个用户时:

users[channel1][user_id1] = ws_user_id1_connection
users[channel2][user_id1] = ws_user_id1_connection
users[channel3][user_id1] = ws_user_id1_connection

从性能的角度来看,这样可以吗?。或者我可以用其他方式完成这个?如果我这样保留它,是 users[channel1]、users[channel2]、users[channel3],它们将仅引用 ws_user_id1_connection。我的意思是当我创建新用户 [channelNew] 时,它不会添加关于 ws_user_id1_connection 的所有数据,而只是引用它。我的想法是,我想要 rooms/channels 这样的东西,并且在每个频道中都有一些连接的用户,这样他们就可以互相交谈。那是正确的方法吗?提前谢谢你。

假设channel1是一个聊天室,user_id1是房间里的userid,那么是的,这是一个很好的实现方式,你不应该为每个频道创建不同的ws。您只需要在发送的数据中添加一些信息,以便客户端知道与消息相关的房间是什么,例如:

{
  'room': 'channel1',
  'from': 'otherUser_id',
  'msg': 'some text message'
}

我建议不要使用 channel 来推荐房间,因为它可能会与 ws 频道混淆。我还更改了变量“users”的名称,因为它没有引用用户,我将其保留为:rooms[room_id1][user_id1] = ws_user_id1_connection

此外,您可能需要查看 Socket.io,它是为此类应用程序设计的一个很好的 Nodejs 库。