如何在ASP.NET Core SignalR v2.1中增加超时设置?

问题描述 投票:6回答:1

我正在尝试ASP.NET Core 2.1上的最新SignalR。我有基本的应用程序,但它现在很快就会超时。我看到这个错误 -

错误:连接断开且出现错误'错误:服务器超时已过,未收到来自服务器的消息。'。

这个超时设置可以在哪里更改?我尝试了文档here但没有关于超时的信息。我正在运行Windows 10的开发环境并使用JavaScript客户端。

编辑:启用客户端日志记录后插入图像。

enter image description here

编辑2:链接到page包含有关旧SignalR版本的超时。

c# signalr asp.net-core-2.0 asp.net-core-signalr
1个回答
5
投票

对于将来可能来到这里的人:

以下是如何增加Javascript客户端超时

hubConnection.serverTimeoutInMilliseconds = 100000; // 100 second

But also take a look at this link,然后阅读我的评论如下:

如果signalR断开连接,您应该再次尝试重新建立连接。由于其他几个原因,连接可能会丢失,包括用户切换网络。例如,如果用户正在使用手机并连接到家庭/办公室wifi,但步出然后连接到蜂窝数据连接。

要重新连接,您可以使用以下内容(对我来说就像一个魅力):

// re-establish the connection if connection dropped
connection.onclose(() => setTimeout(startSignalRConnection(connection), 5000));

其中startSignalRConnection是:

const startSignalRConnection = connection => connection.start()
  .then(() => console.info('Websocket Connection Established'))
  .catch(err => console.error('SignalR Connection Error: ', err));

和连接是

const connection = new HubConnectionBuilder()
  .withUrl(connectionHub, options)
  .withHubProtocol(protocol)
  .build();
© www.soinside.com 2019 - 2024. All rights reserved.