我正在尝试ASP.NET Core 2.1上的最新SignalR。我有基本的应用程序,但它现在很快就会超时。我看到这个错误 -
错误:连接断开且出现错误'错误:服务器超时已过,未收到来自服务器的消息。'。
这个超时设置可以在哪里更改?我尝试了文档here但没有关于超时的信息。我正在运行Windows 10的开发环境并使用JavaScript客户端。
编辑:启用客户端日志记录后插入图像。
编辑2:链接到page包含有关旧SignalR版本的超时。
对于将来可能来到这里的人:
以下是如何增加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();