Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用javascript连续连接到SignalR Hub?_C#_Javascript_Asp.net_Signalr - Fatal编程技术网

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

C# 如何使用javascript连续连接到SignalR Hub?,c#,javascript,asp.net,signalr,C#,Javascript,Asp.net,Signalr,我需要从Web应用程序检查SignalR HUB的可用性。我需要尝试在服务器联机之前的间隔内从ASP.NET WebApp连接到SignalR HUB if ($.connection.hub && $.connection.hub.state === $.signalR.connectionState.reconnected) {window.location.reload()}; 我正在使用这个javascript interval = setInterval(checki

我需要从Web应用程序检查SignalR HUB的可用性。我需要尝试在服务器联机之前的间隔内从ASP.NET WebApp连接到SignalR HUB

if ($.connection.hub && $.connection.hub.state === $.signalR.connectionState.reconnected) {window.location.reload()};
我正在使用这个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);
}
};
if ($.connection.hub && $.connection.hub.state === $.signalR.connectionState.reconnected) {window.location.reload()};

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

已解决

if ($.connection.hub && $.connection.hub.state === $.signalR.connectionState.reconnected) {window.location.reload()};
在第一次运行之后

if ($.connection.hub && $.connection.hub.state === $.signalR.connectionState.reconnected) {window.location.reload()};
$.connection.hub.start();
连接状态为

if ($.connection.hub && $.connection.hub.state === $.signalR.connectionState.reconnected) {window.location.reload()};
$.connection.hub.state === $.signalR.connectionState.reconnected
我只是使用刷新窗口

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

因此,如果SignalR hub脱机,页面刷新将在固定时间间隔后发生,并且客户端正在尝试再次连接。

如果hub断开连接,您可以调用start方法,而不是重新加载页面

if ($.connection.hub && $.connection.hub.state === $.signalR.connectionState.reconnected) {window.location.reload()};
  $.connection.hub.disconnected(function (error) {
    console.log('Disconnection error :' + error)
    $.connection.hub.start(function (connection) {
      console.log("reconnected:" + connection)
    });
  });

这可能会有帮助,我检查过了。我使用的是
$.connection.hub.disconnected(function(){setTimeout(function(){…});
但是,如果我连接一次,一切正常。但是如果服务器在一段时间内处于脱机状态,如何重新连接到服务器?如何等待服务器?例如,每5秒检查一次服务器是否可用?