为什么我的disconnect()处理程序在SignalR Client Side JS中没有被触发?

时间:2014-05-12 14:59:33

标签: signalr signalr-hub signalr.client

我使用SignalR 2.0.3库看到了一些奇怪/意外的行为。

我试图在客户端挂一些回电话,他们似乎没有被解雇。 我真的很想让JS - 客户端的重新连接,重新连接和断开连接的回调。 SignalR连接成功,我在服务器和客户端之间进行了通信。

以下是一些代码段:

$.connection.reconnecting = function () {
    alert("reconnecting");
};
$.connection.reconnected = function () {
    alert("We have been reconnected");
};
$.connection.disconnected = function () {
    alert("We are disconnected!");
};

当我使用SignalR 1.x时,我可以发誓我有这些射击。 目前,我们使用的是2.0.3版本。

我正在运行2台机器设置,我的服务器应用程序(和集线器)位于1台计算机上。

以下是我用来复制的步骤:

1)从第二台机器连接。我查看了浏览器中的网络流量       控制台,它看起来不错。

2)接下来,我将客户端计算机与网络断开连接。在控制台中我看到SignalR      试图重新连接。 (这是预期的)

3)最终在N次重试后,看起来它已断开连接。 (我看到最后的重试是"取消"      在控制台输出中。

4)然而,我的disconnected()处理程序没有被调用。

有关如何追踪这一点的任何见解或想法?

谢谢, JohnB

1 个答案:

答案 0 :(得分:4)

使用SignalR 2.x,您可以注册这样的回调:

$.connection.hub.reconnecting(function() {
    alert("reconnecting"); 
});

$.connection.hub.reconnected(function() {
    alert("We have been reconnected"); 
});

$.connection.hub.disconnected(function() {
    alert("We are disconnected!"); 
});

您还可以使用$.connection.hub.stateChanged()添加回调。请参阅documentation