socket.io private和Group chat

时间:2013-02-21 10:02:29

标签: node.js socket.io

我正在尝试使用socket.io创建一个google / facebook聊天克隆。

当用户连接到服务器时,我将用户放在以用户ID命名的房间中(因此,如果用户打开了多个选项卡,则所有选项卡都会转到同一个房间并在所有选项卡中接收消息)。当A向B发送消息时,我将其广播到以B命名的房间。在UI中,每个聊天窗口都有发送者的ID,所以当用户收到消息时,我找到了发送者ID的窗口并用新的更新窗口信息。简单。

现在,A和B邀请C和D加入群聊。所以聊天变成了群聊。我被困在这里我该如何处理这种情况?如何在客户端UI和服务器中跟踪聊天?

1 个答案:

答案 0 :(得分:0)

您可以随时将组命名为聊天中用户的串联(带有一些分隔符),这些用户按某个任意值(例如id)排序。因此,如果您的用户A具有ID USERA,而用户B具有ID USERB,则包含它们的房间将是USERA-USERB。 (注意,只有当userID中没有破折号时,此模式才有效)。当用户C加入聊天时,打开具有ID USERA-USERB-USERC的房间,将所有用户添加到房间,并将来自先前对话的消息重新广播回用户。

请注意,这将为UserA和UserB打开一个新的对话,您可能不想这样做。在这种情况下,您必须找到一种方式来改变房间ID以便更改房间ID(您必须考虑这一点),然后将最后x条消息重新广播给新用户。

另外请注意,您必须发送相关的房间ID以及发送给客户的所有事件,以便客户端知道该事件与哪个聊天相关。