在群聊中,新消息事件(websocket)应该由客户端发送还是API发送?
Posted
技术标签:
【中文标题】在群聊中,新消息事件(websocket)应该由客户端发送还是API发送?【英文标题】:In a group chat, should the new message event (websocket) be sent by the client or the API? 【发布时间】:2021-09-11 05:57:20 【问题描述】:我有一个疑问,在一个群聊系统中,有一个带有 rest API 的数据库,谁应该发出新消息的事件?
创建新消息的客户端或端点?
例如:X 用户向 Y 组发送消息,然后使用 api 端点 api.com/message-create 并且该端点通过 websocket 发出 message-create 事件
示例 2:X 用户向 Y 组发送消息,然后使用 api api.com/message-create 端点,端点不发出 message-create 事件,但在用户按下发送消息按钮时发出
我仍然不太明白它是否会占用更多的 websocket 通道来实现这一点,如果一个全局通道就足够了,等等。
【问题讨论】:
【参考方案1】:服务器应该负责通信逻辑。所以你的第一个例子更好。
但是:为什么要使用两个通信渠道来发送创建消息? 如果您使用 websocket,则不需要使用额外的 rest 端点从客户端创建消息。 这种方法容易出错。例如,如果客户端在通过 websocket 发送消息后和执行对 REST 端点的调用之前会丢失网络连接? 消息不会存储在数据库中。
您的流程应如下所示:
-
用户点击发送按钮。
消息通过 websocket 发送。
消息异步存储在数据库中(您可以直接从通信服务器执行此操作,也可以使用 rest 端点)
向群组发送“新消息”事件。
【讨论】:
应该是一样的,比如“用户更改频道名称”我的意思是先把请求丢给websocket服务器,然后在服务器上处理,然后再抛出channelUpdate事件 @itzThiefz.exe 是的,它是所有事件和消息的通用基本流程 哦,谢谢你的帮助!以上是关于在群聊中,新消息事件(websocket)应该由客户端发送还是API发送?的主要内容,如果未能解决你的问题,请参考以下文章