首页 文章

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

提问于
浏览
29

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

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

var isConnected;

function onConnected() { isConnected = true; }

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

2 回答

  • 49

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

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

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

相关问题