SignalR:检测客户端上的连接状态

我已经看到了如何通过绑定到.disconnect事件来捕获客户端与SignalR的断开连接事件 .

现在我已经完成了这个,我想让客户端进入“等待重新连接循环”,它不断尝试连接,直到成功或用户取消 . 集线器是否公开连接状态属性?我在想(伪代码)

var isConnected;

function onConnected() { isConnected = true; }

hub.disconnect = function() { while(hub.notconnected) { connect(); }

回答(2)

2 years ago

JS客户端尝试重新连接一段时间,默认为110秒 . 您可以订阅connection.stateChanged事件,并获取有关状态更改的更新,以便您可以将其显示给用户,或验证SignalR对不同断开连接方案的响应 .

在我的测试中,状态已正确更新为断开连接和重新连接等,正如您所期望的那样 .

More information on signalr connections

function connectionStateChanged(state) {
    var stateConversion = {0: 'connecting', 1: 'connected', 2: 'reconnecting', 4: 'disconnected'};
    console.log('SignalR state changed from: ' + stateConversion[state.oldState]
     + ' to: ' + stateConversion[state.newState]);
}

connection = $.connection(signalR_Endpoint);
connection.stateChanged(connectionStateChanged);
connection.start({ waitForPageLoad: false });

2 years ago

客户端总是试图连接 . 你不必担心这一点 . 如果您想在成功重新 Build 连接时执行某些操作,则可以监听重新连接的事件 .

编辑:此更改,客户端只尝试在一段时间内重新连接 . 之后,您必须捕获断开连接事件并手动重新启动 .