signalr - 如何在 ASP.NET Core 2.0 的 SignalR 中检查 HubConnection.StartAsync 是否成功?

标签 signalr asp.net-core-2.0 signalr.client asp.net-core-signalr

将 SignalR 用于 ASP.NET Core 2.0,客户端 (1.0.0-alpha2-final),C# VS2017。

连接代码是:await hubConnection.StartAsync();因为这是一个 await对于 void我们如何测试客户端是否成功连接?在我的测试中,我在服务器端有一个断点 public override async Task OnConnectedAsync()但该断点并不总是被击中,因此我知道 有时 客户端无法连接。或者它做了 连接但 OnConnectedAsync()没有触发?

客户端如何知道它成功建立了连接?

谢谢

编辑:更多信息。它 OnConnectedAsync()使用时 localhost (在VS中调试);它OnConnectedAsync()通过 ngrok 连接时。也许这与代理/CORS有关,我不熟悉。

编辑:似乎客户端 确实连接,因为如果我将 URL 更改为不存在的 URL,它会给出 404。所以看来问题在于 OnConnectedAsync()当客户端通过 ngrok 连接时不会触发,但在直接连接到 localhost 时会触发。

最佳答案

StartAsync不是 void方法但返回 Task .如果客户端没有连接StartAsync throws(返回错误的任务),否则在客户端成功连接后异步调用将完成而不会出错(返回已完成的任务)。

关于signalr - 如何在 ASP.NET Core 2.0 的 SignalR 中检查 HubConnection.StartAsync 是否成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47056690/

相关文章:

azure - 如何获取 SignalR 组成员列表及其详细信息?

angular - 页面刷新和带有 url 重写的 Angular 路由后,cookie 计数为零

.net-core - .NET Core 覆盖特定操作的 Controller 级别授权属性

asp.net - SignalR 处理 HubConnection

signalr.client - SignalR + 未捕获的类型错误 : Object #<Object> has no method 'sending'

c# - SignalR 项目中的 Json 引用冲突

.net - 保持后台任务在云服务应用程序域内运行的最佳实践是什么?

c#-4.0 - SignalR 是 Microsoft 独有的技术吗?

asp.net - asp.net core 2.0 中的机器 key ?

asp.net-core - connection.close 不是 SignalR 函数