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 监听变化),它的维护很简单。
根据微软的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 监听变化),它的维护很简单。