首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >/ Chat- System

/ Chat- System
EN

Stack Overflow用户
提问于 2015-10-01 14:14:41
回答 1查看 1.7K关注 0票数 11

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

对于通知,我有通道“通知/通道”,而对于聊天,我有通道“聊天/通道”。

这两个频道不是太“全球化”了吗?假设站点有1.000.000个用户,这意味着所有这些用户都在这两个渠道中。当一个通知被发送到另一个特定的用户时,这意味着消息通过一个通道发送,1.000.000用户订阅该通道。

聊天信息也是如此。假设一个用户想和另一个用户聊天。每条消息都将通过所有用户订阅的通道,最终只有目标用户会因为传递的receiver_id而接收消息。

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

为每个用户创建一个“子通道”(组聊天和通知、E.G“通知/通道/ User 1”)还是只让所有用户在一个大通道中创建一个“子通道”是更有性能、更安全吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-02 17:07:22

就我个人而言,我处理这个问题的方式如下:

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

代码语言:javascript
复制
{
    "type":"notification",
    "message":"New Mail"
}

聊天消息应该是这样的:

代码语言:javascript
复制
{
    "type":"chat",
    "chatID":4756,
    "message":"Hello, world!"
}

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

如果你需要澄清这个方法,请告诉我。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32889828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档