asp.net-core - ASP.NET API 控制器与 SignalR Hub 方法
问题描述
我正在开发一个原型,它使用 SignalR 将消息从服务器广播到客户端。我还从客户端与服务器进行通信。这可以通过 2 种方式实现:通过控制器或通过 SignalR Hub 中的方法调用。
现在我的问题是:
为什么要选择 SignalR Hub 方法或 ASP.NET API 控制器作为客户端命令调用的端点?(所以不适用于事件/广播消息)
并跟进:是否建议使用一种或两种?
我读到不建议从 API 控制器调用 Hub 方法,因为它们是供客户端调用的,而不是供服务器调用的。
API 控制器和 SignalR Hub 都使用 HTTP。
我用过:
- ASP.NET Core SignalR 1.1.0
- 最新的 .NET Core 版本
SignalR 信息的以下链接:
https ://docs.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-5.0
解决方案
SignalR 使用 HTTP 与集线器建立连接(协商和握手),然后在建立连接后,它使用以下协议之一:websockets
、server sent events
和。你可以在这里阅读更多关于它的信息。long polling
forever frame
您想在需要流式传输数据时使用 SignalR 将数据流式传输到客户端。最简单的例子是刷新某物的状态。想象一下,如果文档已经加载,您需要询问服务器。您将调用端点 n# 次,直到获得所需的答案。使用集线器,服务器将通过 SignalR 调用客户端,表明加载已完成。如您所见,您将节省资源并大大降低您向服务器发出的请求数量。
那你用什么?拥抱还是控制?这真的取决于您要执行的具体操作,而不是广播数据的一般情况。
推荐阅读
- java - 重新发送到卡夫卡主题时骆驼的无限循环
- javascript - webpush 通知过期
- django - Django 收集静态和需求
- security - 解决 XSS 问题
- powershell - 使用 PowerShell 识别以 RD* 开头的实例名称
- javascript - 使用 node.js 加载 tensorflow.js 时出错
- xamarin - 删除 contentpage Xamarin 中的导航栏
- .net - 升级到 netstandard2.0 时出现 Xamarin 错误
- r - 创建一个循环以从 R 中的多个 excel 文件创建多个工作表
- c# - Selenium ChromeDriver '同步已被您的管理员禁用'