控制台应用程序 SignalR 客户端断开连接超时

Console app SignalR client Disconnect Timeout

我正在尝试将断开连接超时设置为高于默认 30 秒的值。 Web 上的所有示例都更面向 JS。

        var hubConnection = new HubConnection("http://localhost:8087");
        var testHubProxy = hubConnection.CreateHubProxy("TestHub");

错误:System.TimeoutException:无法在配置的 00:00:30 超时内重新连接,正在断开连接。

这没有用:

        GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(35);

更新: 看来服务器端需要设置DisconnectTimeout!?

为什么不允许不同的客户端有不同的Disconnect Timeout?

断开连接超时服务器端配置。主要原因可能如下:

  • 我们知道服务器可能需要一些 N 时间单位 来响应,以便所有客户端都清楚。
  • 服务器应该定期 ping 客户端进行连接。因此服务器知道客户端连接并可以管理其他集线器并从其连接池中消除过期连接。
  • 客户端不应该设置断开连接超时,因为它不知道什么时候可以关闭,例如互联网在客户端意外关闭比客户端无法告诉服务器我不会再次连接到你。是的,但我们在客户端有一些事件告诉它它 未连接 到信号集线器了。请查看重新连接和断开连接事件。

总结:

断开连接超时是为了通知服务器它的客户端不再连接了,即使它丢脸地断开连接