Ale*_*ndr 24 javascript long-polling signalr
问题是SignalR JavaScript客户端在与服务器的连接丢失时如何检测?
谢谢你的回复!
Joh*_*ner 29
集线器有一个方法disconnect,允许您在断开连接时添加回调:
myHub.disconnect(function() {
alert('Server has disconnected');
});
Run Code Online (Sandbox Code Playgroud)
如果您没有使用集线器,那么disconnect方法的代码将帮助您:
$(connection).bind("onDisconnect", function (e, data) {
callback.call(connection);
});
Run Code Online (Sandbox Code Playgroud)
这显示了挂接到底层连接的onDisconnect事件的语法.
Mat*_*rla 13
如果您使用的是集线器,请实现IDisconnect接口.
public class ChatHub : Hub, IDisconnect
{
public void Disconnect()
{
Debug.WriteLine(Context.ConnectionId + " disconnected");
}
}
Run Code Online (Sandbox Code Playgroud)
在持久连接上,您可以覆盖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");
}
}
Run Code Online (Sandbox Code Playgroud)
这使用"@aspnet/signalr": "^1.0.0"npm 包对我有用
const connection = new signalr.HubConnectionBuilder()
.withUrl('url')
.configureLogging(signalr.LogLevel.Information)
.build()
connection.onclose(() => {
// close logic goes here
})
Run Code Online (Sandbox Code Playgroud)
从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!");
}
});
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请访问此网站:
http://weblogs.asp.net/davidfowler/archive/2012/06/10/signalr-0-5-1-released.aspx
小智 5
SignalR 2.0这样做的方式是这样的:
$.connection.hub.disconnected(function () {
console.log('Connection disconnected')
});
Run Code Online (Sandbox Code Playgroud)
提供的答案将不再有效。这是停止/断开连接的新方法。
myHub.stop().then(() => {
alert('Server has disconnected');
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22094 次 |
| 最近记录: |