节点Js,websockets保存通道

时间:2015-11-07 22:24:49

标签: node.js websocket channel

您好我使用带有节点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

从表现的角度来看,这样可以吗?或者我可以通过其他方式实现这一目标?如果我这样离开,那是用户[channel1],用户[channel2],用户[channel3],他们只会引用ws_user_id1_connection。我的意思是当我创建新用户[channelNew]时,它不会添加有关ws_user_id1_connection的所有数据,而只是引用它。想法是我希望有一些东西作为房间/频道,并在每个频道中有一些连接的用户,以便他们可以互相交谈。这是正确的方法吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

假设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库。