如何从SignalR客户端端确定服务器断开连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从SignalR客户端端确定服务器断开连接相关的知识,希望对你有一定的参考价值。

参考技术A   1. 集线器有disconnect这将允许您添加一个回调函数,当断线发生:myHub.disconnect(function()
alert('Server has disconnected');
);

如果你阿仁'枢纽然后为代码将帮助你:$(connection).bind("onDisconnect", function (e, data)
callback.call(connection);
);

这显示了语法钩到底层连接的触发OnDisconnect事件。
2. 如果集线器那么IDisconnect接口。public class ChatHub : Hub, IDisconnect

public void Disconnect()

Debug.WriteLine(Context.ConnectionId + " disconnected");



对持续连接可以覆盖OnDisconnectAsync, (从SignalR维基于)public class MyEndPoint : PersistentConnection

protected override Task OnDisconnectAsync(string clientId)

return Connection.Broadcast("Client " + clientId + " disconncted");



3. 开始与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!");

);本回答被提问者采纳

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

【中文标题】如何确定与 SignalR 客户端的服务器断开连接?【英文标题】:How to determine server disconnection from SignalR client? 【发布时间】:2012-02-24 10:36:18 【问题描述】:

SignalR JavaScript 客户端如何检测与服务器的连接何时丢失?

【问题讨论】:

你在 asp.net 中使用 signalr 吗? 【参考方案1】:

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

myHub.disconnect(function() 
  alert('Server has disconnected');
);

如果您不使用集线器,则断开连接方法的代码将为您提供帮助:

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

这显示了挂钩到底层连接的 onDisconnect 事件的语法。

【讨论】:

不要使用 bind... 只是做 connection.disconnected 现在正确的方法是$.connection.hub.disconnected(callback)【参考方案2】:

如果您使用的是集线器,则实现 IDisconnect 接口。

public class ChatHub : Hub, IDisconnect

    public void Disconnect()
    
        Debug.WriteLine(Context.ConnectionId + " disconnected");
    

在持久连接上,您可以覆盖 OnDisconnectAsync, (来自 SignalR wiki https://github.com/SignalR/SignalR/wiki/PersistentConnection)

public class MyEndPoint : PersistentConnection 

    protected override Task OnDisconnectAsync(string clientId) 
    
        return Connection.Broadcast("Client " + clientId + " disconncted");   
    

【讨论】:

这作为与问题无关的答案实际上非常有用,谢谢!【参考方案3】:

这对我有用 "@aspnet/signalr": "^1.0.0" npm 包

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

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

【讨论】:

【参考方案4】:

SignalR 2.0 的做法是这样的:

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

http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-javascript-client#connectionlifetime

【讨论】:

【参考方案5】:

从 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!");
    
);

欲了解更多详情,请查看此网站:

http://weblogs.asp.net/davidfowler/archive/2012/06/10/signalr-0-5-1-released.aspx

【讨论】:

【参考方案6】:

以下对我有用:

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

connection.disconnected(function() 
    console.log('Connection disconnected');
);

我正在使用版本:2.1.2

参考以下链接:Link

【讨论】:

以上是关于如何从SignalR客户端端确定服务器断开连接的主要内容,如果未能解决你的问题,请参考以下文章

角度 SignalR 经常断开连接并显示错误状态代码 1006

断开客户端与服务器端信号器的连接

如何从客户端断开和重新连接 socket.io?

如何判断socket客户端连接断开

选项卡背景化后每隔几分钟 SignalR 断开连接

如何判断客户端是不是如何判断是不是与服务器断开了