首页 > 解决方案 > ASP.NET API 控制器与 SignalR Hub 方法

问题描述

我正在开发一个原型,它使用 SignalR 将消息从服​​务器广播到客户端。我还从客户端与服务器进行通信。这可以通过 2 种方式实现:通过控制器或通过 SignalR Hub 中的方法调用。

现在我的问题是:
为什么要选择 SignalR Hub 方法或 ASP.NET API 控制器作为客户端命令调用的端点?(所以不适用于事件/广播消息)
并跟进:是否建议使用一种或两种?

我读到不建议从 API 控制器调用 Hub 方法,因为它们是供客户端调用的,而不是供服务器调用的。

API 控制器和 SignalR Hub 都使用 HTTP。

我用过:

SignalR 信息的以下链接:
https ://docs.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-5.0

标签: asp.net-core.net-coresignalr

解决方案


SignalR 使用 HTTP 与集线器建立连接(协商和握手),然后在建立连接后,它使用以下协议之一:websocketsserver sent events和。你可以在这里阅读更多关于它的信息。long pollingforever frame

您想在需要流式传输数据时使用 SignalR 将数据流式传输到客户端。最简单的例子是刷新某物的状态。想象一下,如果文档已经加载,您需要询问服务器。您将调用端点 n# 次,直到获得所需的答案。使用集线器,服务器将通过 SignalR 调用客户端,表明加载已完成。如您所见,您将节省资源并大大降低您向服务器发出的请求数量。

那你用什么?拥抱还是控制?这真的取决于您要执行的具体操作,而不是广播数据的一般情况。


推荐阅读