2013-02-21 58 views
0

我想用socket.io做一个谷歌/脸谱网聊天克隆。socket.io私人和群聊

当用户连接到服务器,我把用户在用户ID命名的房间(所以,如果用户有多个标签页打开时,所有进入同一个房间,并在所有选项卡收到消息)。当A发送消息给B时,我将它广播到以B命名的房间。在UI中,我有每个具有发送者ID的聊天窗口,因此当用户收到消息时,我找到具有发送者ID的窗口并用新的窗口更新窗口信息。简单。

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

回答

0

你总是可以命名用户组的连接(带分隔符的一些)的一些任意值(如id)进行排序聊天。因此,如果您的用户A的ID为USERA,用户B的ID为USERB,则包含它们的房间将为USERA-USERB。 (注意,只有在用户标识符中没有破折号时,这个模式才会起作用)。当用户C加入聊天室时,打开一个ID为USERA-USERB-USERC的房间,将所有用户添加到房间中,并将来自先前对话的消息重新播送回用户。

注意这将打开UserA和用户B新的对话,你可能不希望这样做。在这种情况下,您必须找到一种混洗房间的方式,以便更改房间ID(您必须仔细考虑),然后将最后x个消息重播到新用户。

另要注意,你必须发送相关的房间ID与一切让客户知道哪些聊天事件是关于发送到客户端的事件。

+0

是的,我在同一直线上,但认为在客户端管理更新roomID得到棘手。我仍在制定一些解决方案。一旦我锻炼一些具体的东西,我会更新。 – SamSerious 2013-02-22 01:35:27