Javascript 如何确定服务器与SignalR客户端的断开连接?

Javascript 如何确定服务器与SignalR客户端的断开连接?,javascript,long-polling,signalr,Javascript,Long Polling,Signalr,问题是signarjavascript客户端如何检测与服务器的连接何时丢失 谢谢你的回复 如果使用集线器,则实现IDisconnect接口 public class ChatHub : Hub, IDisconnect { public void Disconnect() { Debug.WriteLine(Context.ConnectionId + " disconnected"); } } 在持久连接上,您可以覆盖OnDisconnectAsync

问题是signarjavascript客户端如何检测与服务器的连接何时丢失


谢谢你的回复

如果使用集线器,则实现IDisconnect接口

public class ChatHub : Hub, IDisconnect
{
    public void Disconnect()
    {
        Debug.WriteLine(Context.ConnectionId + " disconnected");
    }
}
在持久连接上,您可以覆盖OnDisconnectAsync, (来自位于的SignalR wiki)


集线器有一个方法
disconnect
,它允许您在断开连接时添加回调:

myHub.disconnect(function() {
  alert('Server has disconnected');
});
如果您不使用集线器,则断开连接方法的代码将帮助您:

$(connection).bind("onDisconnect", function (e, data) {
  callback.call(connection);
});

这显示了钩住基础连接的onDisconnect事件的语法。

从SignalR v0.5.1开始,它的工作方式如下:

$.connection.hub.stateChanged(function (change) {
    if (change.newState === $.signalR.connectionState.reconnecting) {
        console.log("liveFeed is reconnecting!");
    }
    else if (change.newState === $.signalR.connectionState.connected) {
        console.log("liveFeed is connected!");
    }
});
有关更多详细信息,请访问此网站:


信号器2.0的实现方法如下:

$.connection.hub.disconnected(function () {
    console.log('Connection disconnected')
});

以下内容为我工作:

var connection = $.hubConnection('signalrConnectionUrl');

connection.disconnected(function() {
    console.log('Connection disconnected');
});
我使用的是版本:2.1.2


请参阅以下链接以供参考:

这对我使用
“@aspnet/signalr”:“^1.0.0”
npm软件包很有效

const connection = new signalr.HubConnectionBuilder()
    .withUrl('url')
    .configureLogging(signalr.LogLevel.Information)
    .build()

connection.onclose(() => {
   // close logic goes here
})

你在asp.net中使用信号器吗?不要使用绑定。。。只需执行connection.disconnected正确的方法现在是
$.connection.hub.disconnected(callback)
作为与问题无关的答案,这实际上非常有用,谢谢!
const connection = new signalr.HubConnectionBuilder()
    .withUrl('url')
    .configureLogging(signalr.LogLevel.Information)
    .build()

connection.onclose(() => {
   // close logic goes here
})