【问题标题】:Stopping SignalR-connection is slow停止 SignalR 连接很慢
【发布时间】:2017-06-19 21:35:08
【问题描述】:

停止 Javascript 客户端的 SignalR 连接很慢(大约 30 秒)。

我使用 SignalR,版本 2.0.1(但问题在 2.0.0 中重现)用于集成到 ASP.NET 站点的网络聊天。我有一个 .NET SignalR 客户端(出于其他原因)和很多 JS 客户端(聊天客户端)。我的测试用例非常简单。我想禁用 ASP.NET 页面上的聊天。出于这个原因,我尝试使用下一个代码停止 SignalR 连接:

$.connection.hub.stop();

但 onDisconnected 方法(在集线器上)仅在 30 秒后调用。我想连接是由断开超时而不是由Javascript代码停止的。我默认使用 LongPolling transpot。

var initObject = { transport: ["longPolling", "webSockets", "foreverFrame", "serverSentEvents"] };
$.connection.hub.start(initObject).done(function () {
    ...
}

问题在 Google Chrome 的最新版本中重现,但在 IE 和 Mozilla 中运行良好。 SignalR 如此奇怪的行为是什么原因,我该如何避免?

【问题讨论】:

  • @Jason Evans,感谢您的参考,但我认为这不是我的情况,因为我的问题与 Javascript 客户端(不是 .NET 客户端)有关。
  • 只有 1-2 个客户的情况下会这么慢吗?
  • @Abhishek Nanda,是的。
  • 在我看来,stop() 可能没有完成它的工作。如果你得到 30 秒的超时时间,这意味着你调用 stop 并没有终止连接。你有这个问题的重现吗?

标签: asp.net signalr


【解决方案1】:

对于遇到此问题的其他人,只需使用 conn.Stop(new TimeSpan(0)) 立即终止连接。

【讨论】:

    【解决方案2】:
    conn.disconnect();
    conn.stop();
    hub.subscribe(null);
    conn = null;
    hub= null;
    

    试试这个,让我知道它是否有效。不过它适用于 android。

    【讨论】:

      【解决方案3】:

      通过将 SignalR 版本更新到 2.0.3 解决了问题。

      【讨论】:

        猜你喜欢
        • 2021-12-02
        • 2015-04-21
        • 2014-06-17
        • 1970-01-01
        • 2021-10-27
        • 1970-01-01
        • 2015-11-02
        • 2017-09-16
        • 2020-07-04
        相关资源
        最近更新 更多