我正在尝试用socket.io创建一个google/facebook聊天的克隆。
当用户连接到服务器时,我将用户放在一个以用户ID命名的房间中(因此,如果用户打开了多个选项卡,则所有选项卡都会转到同一个房间,并在所有选项卡中接收消息)。当A向B发送消息时,我将其广播到以B命名的房间。在UI中,我有每个带有发送者ID的聊天窗口,因此当用户收到消息时,我会找到带有发送者ID的窗口,并用新消息更新该窗口。很简单。
现在,A和B邀请C和D加入群聊。所以聊天变成了群聊。我被困在这里了。我该如何处理这种情况呢?如何在客户端UI和服务器中跟踪聊天?
发布于 2013-02-21 17:14:05
您可以始终将组命名为聊天中按某个任意值(如id)排序的用户的串联(带有某个分隔符)。因此,如果您有ID为USERA的用户A和ID为USERB的用户B,则包含它们的房间将是USERA-USERB。(请注意,只有当userID中没有破折号时,此模式才有效)。当用户C加入聊天时,打开一个ID为USERA-USERB-USERC的房间,将所有用户添加到该房间,并将上一次对话中的消息重新广播回用户。
注意:这将为UserA和UserB打开一个新的对话,这可能不是您想要的。在这种情况下,您必须找到一种方法来对房间进行混洗,以便更改房间ID (您必须对此进行一些考虑),然后将最后x条消息重新广播给新用户。
另外,您必须发送与发送给客户端的所有事件相关联的房间id,以便客户端知道该事件与哪个聊天有关。
https://stackoverflow.com/questions/14999352
复制相似问题