我读过很多关于websockets的文章,并且已经在我的系统中实现了它们。这个问题是关于如何正确地使用它们。我想以正确的方式实现通知和聊天系统。
对于通知,我有通道“通知/通道”,而对于聊天,我有通道“聊天/通道”。
这两个频道不是太“全球化”了吗?假设站点有1.000.000个用户,这意味着所有这些用户都在这两个渠道中。当一个通知被发送到另一个特定的用户时,这意味着消息通过一个通道发送,1.000.000用户订阅该通道。
聊天信息也是如此。假设一个用户想和另一个用户聊天。每条消息都将通过所有用户订阅的通道,最终只有目标用户会因为传递的receiver_id而接收消息。
如何正确处理通知频道和“私人”聊天频道?
为每个用户创建一个“子通道”(组聊天和通知、E.G“通知/通道/ User 1”)还是只让所有用户在一个大通道中创建一个“子通道”是更有性能、更安全吗?
发布于 2015-10-02 17:07:22
就我个人而言,我处理这个问题的方式如下:
每个用户都有一个websocket连接。此连接将用于传递所有数据。我会使用json格式来回传递数据。我会使用json结构中的一个字段来指示消息的类型,以及其他信息,比如聊天室ID。所以,如果我想发送通知,可以这样做(非常简单的例子):
{
"type":"notification",
"message":"New Mail"
}聊天消息应该是这样的:
{
"type":"chat",
"chatID":4756,
"message":"Hello, world!"
}客户端Javascript逻辑将决定消息的类型以及如何处理它。服务器端逻辑将确定用户是否“订阅”指定的聊天室,因此它将知道要发送给哪个用户的聊天消息。这将确保它的安全,因此您不会向没有订阅房间ID的用户发送聊天消息。
如果你需要澄清这个方法,请告诉我。
https://stackoverflow.com/questions/32889828
复制相似问题