在群聊中,新消息事件(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发送?的主要内容,如果未能解决你的问题,请参考以下文章

使用 asmack 在群聊中发送后收到多条消息

使用 XMPP 在群聊中传输文件

如何使用 Skype4COM 在 Skype 群聊中发送消息?

在 xmpp 群聊中发送聊天标记

如何在 IOS 的 XMPP 群聊中接收通知

cos migration工具webhook推送