1

我在 Asp.Net Core 3.1 和 Angular8 上使用 Azure SignalR。我还在客户端使用了 withAutomaticReconnect() 选项。它与 azure signalr 成功连接。但经过一段时间后,它会显示此错误消息并再次连接到 WebSocket。

在此处输入图像描述

4

1 回答 1

1

错误:连接因错误“错误:服务器超时而未收到来自服务器的消息而断开”。

默认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;

测试结果

在此处输入图像描述

于 2020-05-24T05:51:12.283 回答