【发布时间】: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 并没有终止连接。你有这个问题的重现吗?