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

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

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

var isConnected; function onConnected() { isConnected = true; } hub.disconnect = function() { while(hub.notconnected) { connect(); } 

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

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

有关信号器连接的更多信息

 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 }); 

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

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