use*_*259 11 php notifications rpc publish-subscribe websocket
我已经阅读了很多关于websockets的内容,并且已经在我的系统中实现了它们.这个问题是关于如何正确使用它们.我想以正确的方式实现通知和聊天系统.
对于通知,我有频道"通知/频道",对于聊天,我有频道"聊天/频道".
这两个渠道不是太"全球化"吗?假设当该网站拥有1.000.000个用户时,这意味着所有这些用户都将处于这两个渠道中.当一个通知发送给另一个特定用户时,这意味着该消息通过一个1.000.000用户订阅的频道发送.
与聊天消息相同.假设用户想要与其他用户聊天.每条消息都将通过所有用户订阅的频道,最后,由于传递的receiver_id,只有目标用户才会收到该消息.
如何正确处理通知渠道和"私人"聊天渠道?
为每个用户创建一个"子频道"(群聊和通知,EG"通知/频道/用户1")或者只是让所有用户进入一个大频道会更高效和安全吗?
就我个人而言,我解决这个问题的方法如下:
每个用户有 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 的用户发送聊天消息。
如果您需要对此方法的任何说明,请告诉我。
归档时间: |
|
查看次数: |
810 次 |
最近记录: |