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

8 c# signalr asp.net-core-2.0 asp.net-core-signalr

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

错误:连接已断开,错误为“错误:服务器超时,但未收到来自服务器的消息。”。

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

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

在此处输入图片说明

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

xei*_*ton 6

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

这是增加Javascript客户端超时的方法

hubConnection.serverTimeoutInMilliseconds = 100000; // 100 second
Run Code Online (Sandbox Code Playgroud)

但也请查看此链接,然后在下面阅读我的评论:

如果signalR断开连接,则应尝试重新建立连接。连接可能由于其他一些原因而断开,包括用户交换网络。例如,如果用户正在使用手机并连接到家庭/办公室wifi,但先退出,然后再连接到蜂窝数据连接。

要重新连接,您可以使用以下命令(对我来说就像是一件吊饰):

// re-establish the connection if connection dropped
connection.onclose(() => setTimeout(startSignalRConnection(connection), 5000));
Run Code Online (Sandbox Code Playgroud)

在哪里startSignalRConnection

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

和连接是

const connection = new HubConnectionBuilder()
  .withUrl(connectionHub, options)
  .withHubProtocol(protocol)
  .build();
Run Code Online (Sandbox Code Playgroud)


小智 6

在启动.cs中

services.AddSignalR(hubOptions =>
            {
                hubOptions.EnableDetailedErrors = true;
                hubOptions.KeepAliveInterval = TimeSpan.FromMinutes(60);
            })
Run Code Online (Sandbox Code Playgroud)