0

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

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

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

4

1 回答 1

0

您始终可以将组命名为聊天中用户的串联(带有一些分隔符),按任意值(例如 id)排序。因此,如果您有 ID 为 USERA 的用户 A 和 ID 为 USERB 的用户 B,则包含他们的房间将是 USERA-USERB。(请注意,此模式仅在用户 ID 中没有破折号时才有效)。当用户 C 加入聊天时,打开一个 ID 为 USERA-USERB-USERC 的房间,将所有用户添加到该房间,并将之前对话中的消息重新广播给用户。

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

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

于 2013-02-21T17:14:05.063 回答