嗨,我正在使用带有node js server的websockets,npm模块是ws。我有一个数组,我在其中保存所有连接,但现在我必须将它们分离,所以我做了这样的多维数组:
users[channel1][user_id1] = ws_user_id1_connection
问题是当我在多个频道中有一个用户时:
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[cannel2],users[channel3],他们将只引用ws_user_id1_connection。我的意思是,当我创建新用户[channelNew]时,它不会添加关于ws_user_id1_connection的所有数据,而只是引用它。我的想法是,我希望有一些房间/频道,在每个频道中都有一些连接的用户,这样他们就可以相互交谈。这是正确的方式吗?提前谢谢。
假设channel1
是聊天室,user_id1
是聊天室中的用户ID,那么是的,这是实现它的好方法,不应该为每个通道创建不同的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库,专为这类应用程序设计。