【问题标题】:socket.io private and Group chatsocket.io 私人和群聊
【发布时间】:2013-02-06 14:31:43
【问题描述】:

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

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

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

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,我也是这么想的,但是在客户端管理更新的 roomID 变得很棘手。我还在想办法解决。一旦我锻炼了一些具体的东西,我会更新。
    猜你喜欢
    • 2018-12-30
    • 2011-11-18
    • 2017-06-12
    • 2017-04-13
    • 2020-12-22
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2018-03-11
    相关资源
    最近更新 更多