SignalR 实时聊天,我应该在集线器或 http api 中发送消息吗?

SignalR real-time chat, should I send message in hub or http api?

根据微软的tutorial,我在集线器中发送消息。

public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}

我阅读了第三方聊天服务提供商的 documentation,他们 API 使用 http post 端点发送消息。

POST /rooms/:room_id/messages

这是另一个提供商的 documentation,也是一个 http post 端点。

[POST] /post_comment

我不明白他们为什么要这样做,我想知道这样做的优点和缺点。

我的问题是:

使用 http 端点是更好的方法吗?

Microsoft 教程中的 SignalR 是纯代码,但第三方提供商是具有 SignalR 功能的完整 API 端点。恕我直言,他们有正常的 API 但在实施中使用带有 SignalR 的 websocket 进行实时消息传递。

它们有两个部分。首先是服务器端 API,其次是客户端。 服务器 API 允许您对更改数据执行任何操作(例如创建房间..),客户端负责监听更改和更新 UI.

他们连接到集线器以创建隐藏在他们的 SDK 中的 websocket。 只要看看 QUISCUS Webhooks 或 EventHandlers。 您可以自己编写 API,也可以使用 SignalR。

如果你有分离的东西(服务器 POST 端点,客户端通过 websocket 监听变化),它的维护很简单。