【问题标题】:How to connect to SignalR Hub continuously using javascript?如何使用 javascript 连续连接到 SignalR Hub?
【发布时间】:2014-02-26 09:20:34
【问题描述】:

我需要从 Web 应用程序检查 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);
}
};

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

【问题讨论】:

  • 我查过了。我正在使用$.connection.hub.disconnected(function() { setTimeout(function() {...}); 但是,如果我连接一次 - 一切正常。但是如果服务器刚刚离线,如何在一段时间内重新连接到服务器?如何等待服务器?例如 - 每 5 秒检查一次它是否可用?

标签: c# javascript asp.net signalr


【解决方案1】:

解决了。

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 集线器处于脱机状态,则页面刷新将在固定间隔后发生,并且客户端正在尝试再次连接。

【讨论】:

    【解决方案2】:

    您可以在集线器断开连接时调用 start 方法,而不是重新加载页面。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多