SignalR实时聊天,我应该在集线器还是HTTP API中发送消息?

时间:2019-09-26 02:05:40

标签: signalr signalr-hub asp.net-core-signalr

根据Microsoft的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_comment

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

我的问题是:

使用http终结点更好吗?

1 个答案:

答案 0 :(得分:0)

Microsoft教程的

SignalR是纯代码,但第三方提供程序是具有SignalR功能的完整API端点。恕我直言,它们具有正常的API,但在实现中正在将Websocket与SignalR一起用于实时消息传递。

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

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

如果您分开进行维护(服务器POST端点,客户端通过websocket监听更改),则维护简单。