【问题标题】:Workaround for lack of ConnectionSlow, Reconnecting and StateChanged events in SignalR Core?SignalR Core 中缺少 ConnectionSlow、Reconnecting 和 StateChanged 事件的解决方法?
【发布时间】:2019-06-19 12:52:56
【问题描述】:

我正在将一个项目从 SignalR 升级到 SignalR Core,并遇到以下问题。我没有看到 .NET 客户端快速检测到它已与服务器断开连接的方法。当 Web 服务回收其应用程序池时会发生这种情况。 .NET Core 客户端需要 90 秒才能通过 HubConnection.Closed 事件检测到这一点。

在最初的 SignalR 中,这是通过 HubConnection.ConnectionSlowHubConnection.ReconnectingHubConnection.StateChanged 等许多事件即时完成的。

我在最新的稳定 SignalR Core 版本 1.0.1 中没有看到任何这些事件。我尝试监控 HubConnection.State 属性的变化,但这似乎反映了 HubConnection.Closed 事件,并且也需要 90 秒才能更新。

有哪些建议的解决方法可以更快地检测到连接变化?我需要实现自己的保持活动消息系统吗?

【问题讨论】:

    标签: c# asp.net-core signalr signalr-hub asp.net-core-signalr


    【解决方案1】:

    最终问题是 app_pool 回收操作需要 90 秒才能关闭旧的 app_pool。这意味着 SignalR 连接在此期间真正处于活动状态,这就是客户端无法检测到断开连接的原因。一个快速的解决方法是将以下设置从默认的 90 秒更改为较低的超时时间(在我的情况下为 30 秒):

    [application pool] > Right Click > Advanced Settings > Shutdown Time Limit (seconds) > 30
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-19
      • 2011-05-07
      • 1970-01-01
      相关资源
      最近更新 更多