首页 文章

Websockets Notification- / Chat- System

提问于
浏览
10

我已经阅读了很多关于websockets的内容,并且已经在我的系统中实现了它们 . 这个问题是关于如何正确使用它们 . 我想以正确的方式实现通知和聊天系统 .

对于通知,我有 Channels “通知/ Channels ”,对于聊天,我有 Channels “聊天/ Channels ” .

这两个渠道不是太“全球化”吗?假设当该网站拥有1.000.000个用户时,这意味着所有这些用户都将处于这两个渠道中 . 当一个通知发送给另一个特定用户时,这意味着该消息通过一个1.000.000用户订阅的 Channels 发送 .

与聊天消息相同 . 假设用户想要与其他用户聊天 . 每条消息都将通过所有用户订阅的 Channels ,最后,由于传递的receiver_id,只有目标用户才会收到该消息 .

如何正确处理通知渠道和“私人”聊天渠道?

为每个用户创建“子 Channels ”(群聊和通知,E.G“通知/ Channels /用户1”)或者只是让所有用户进入一个大 Channels 会更高效吗?

1 回答

  • 1

    就个人而言,我要解决的问题如下:

    每个用户都有1个websocket连接 . 此连接将用于传递所有数据 . 我会使用json格式来回传递数据 . 我会在json结构中使用一个字段来指示消息的类型,以及其他信息,例如聊天室ID . 所以,如果我想发送通知,它可能是这样的(非常简单的例子):

    {
        "type":"notification",
        "message":"New Mail"
    }
    

    聊天消息会是这样的:

    {
        "type":"chat",
        "chatID":4756,
        "message":"Hello, world!"
    }
    

    客户端Javascript逻辑将确定消息的类型以及如何处理它 . 服务器端逻辑将确定用户是否“订阅”了指定的聊天室,因此它将知道要发送给哪个用户的聊天消息 . 这样可以保证其安全,因此您不会向未订阅房间ID的用户发送聊天消息 .

    如果您需要对此方法进行任何说明,请与我们联系 .

相关问题