Websockets通知 - /聊天 - 系统

use*_*259 11 php notifications rpc publish-subscribe websocket

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

对于通知,我有频道"通知/频道",对于聊天,我有频道"聊天/频道".

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

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

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

为每个用户创建一个"子频道"(群聊和通知,EG"通知/频道/用户1")或者只是让所有用户进入一个大频道会更高效和安全吗?

Que*_*sen 3

就我个人而言,我解决这个问题的方法如下:

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

{
    "type":"notification",
    "message":"New Mail"
}
Run Code Online (Sandbox Code Playgroud)

聊天消息会是这样的:

{
    "type":"chat",
    "chatID":4756,
    "message":"Hello, world!"
}
Run Code Online (Sandbox Code Playgroud)

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

如果您需要对此方法的任何说明,请告诉我。