如何使用javascript连续连接到SignalR Hub?

时间:2014-02-26 09:20:34

标签: c# javascript asp.net signalr

我需要从Web App检查SignalR HUB的可用性。我需要尝试在间隔期间从ASP .NET WebApp连接到SignalR HUB,直到服务器上线。

我正在使用这个javascript。

interval = setInterval(checkifconnected, 3000);

function checkifconnected() {

if ($.connection.hub && $.connection.hub.state === 
$.signalR.connectionState.disconnected) {                        
$.connection.hub.start();

if ($.connection.hub && $.connection.hub.state === 
$.signalR.connectionState.connected) {                        
clearInterval(interval);
}
};

问题是如果集线器启动一次且服务器未联机,则应用程序不会重新连接到它。怎么解决?

2 个答案:

答案 0 :(得分:0)

解决。

if ($.connection.hub && $.connection.hub.state === $.signalR.connectionState.reconnected) {window.location.reload()};

第一次运行后

$.connection.hub.start();

连接状态是

$.connection.hub.state === $.signalR.connectionState.reconnected

我只是使用

刷新一个窗口
window.location.reload()

因此,如果SignalR集线器处于脱机状态,则会在固定时间间隔后发生页面刷新,并且客户端正在尝试再次连接。

答案 1 :(得分:0)

集线器断开连接后,您只需调用start方法,而不是重新加载页面。

  $.connection.hub.disconnected(function (error) {
    console.log('Disconnection error :' + error)
    $.connection.hub.start(function (connection) {
      console.log("reconnected:" + connection)
    });
  });