群聊中,新消息事件(websocket)应该由客户端发送还是API发送?

In a group chat, should the new message event (websocket) be sent by the client or the API?

我有一个疑问,在一个有restAPI的数据库的群聊系统中,新消息的事件应该由谁发出?

创建新消息的客户端或端点?

例如:X 用户向 Y 组发送一条消息,然后使用 api 端点 api。com/message-create 并且该端点通过 websocket[= 发出消息创建事件11=]

示例 2:X 用户向组 Y 发送消息,然后使用 api api.com/message-create 端点并且端点不发出消息创建事件,但是当用户按下发送消息按钮时发出

我还是不太明白是否会占用更多的websocket通道来实现,如果一个全局的就够了等等

服务器应该负责通信逻辑。所以你的第一个例子更好。

但是:为什么要使用两个通信渠道来发送创建消息? 如果您使用 websocket,则不需要使用其他 rest 端点从客户端创建消息。 这种方法容易出错。例如,如果客户端在通过 websocket 发送消息之后和执行对 REST 端点的调用之前会断开网络连接? 消息不会存储在数据库中。

您的流程应该如下所示:

  1. 用户点击发送按钮。
  2. 消息通过 websocket 发送。
  3. 消息异步存储在数据库中(您可以直接从通信服务器进行,​​或者使用 rest 端点)
  4. 向群组发出“新消息”事件。