azure - Azure SignalR withAutomaticReconnect()“错误:连接因错误而断开”...在 Angular8 和 Asp.Net Core 3.1 上
问题描述
我在 Asp.Net Core 3.1 和 Angular8 上使用 Azure SignalR。我还在客户端使用了 withAutomaticReconnect() 选项。它与 azure signalr 成功连接。但经过一段时间后,它会显示此错误消息并再次连接到 WebSocket。
解决方案
错误:连接因错误“错误:服务器超时而未收到来自服务器的消息而断开”。
默认serverTimeoutInMilliseconds
值为 30,000 毫秒(30 秒),如果超过此超时时间而没有收到来自服务器的任何消息,则连接将终止并出现上述错误。
请检查您是否配置/更改了 SignalR 集线器服务器的KeepAliveInterval
选项。
更改时KeepAliveInterval
,我们应该更改serverTimeoutInMilliseconds
客户端的设置。并且推荐serverTimeoutInMilliseconds
值是该值的两倍KeepAliveInterval
。
例如:
在中心服务器上,将 KeepAliveInterval 更改为 1 分钟
services.AddSignalR(hubOptions =>
{
hubOptions.KeepAliveInterval = TimeSpan.FromMinutes(1);
}).AddAzureSignalR();
在客户端,将 serverTimeoutInMilliseconds 更改为 2 分钟
this.hubConnection.serverTimeoutInMilliseconds = 120000;
测试结果
推荐阅读
- javascript - 如何在基于类的组件中的函数内引发反应警报
- linq - 是否有所有 Linq 语句的完整列表?
- iis - 在 IIS 中运行 slim 时找不到页面
- excel - Excel 仅引用我正在编写公式的工作表中的单元格
- python - 如何使用 SWIG 接口在 python 中访问 C++ typedef'd 结构
- java - 使用 setText() 具有固定字符串的动态计数器?
- java - Java 中 Arrays.deepEquals() 的时间复杂度
- django - 如何在基于 SimpleListFilter 的过滤器 django 中覆盖 empty_label?
- ios - 在 Metal 的计算函数中使用 `stage_in`
- ios - SpriteKit跳转后如何让玩家节点站立?