2012-02-01 75 views

回答

25

甲毂有一个方法disconnect这将允许您当断开发生添加回调:

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

如果你不使用集线器然后断开方法WIL代码l帮助你:

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

这显示挂钩到基础连接的onDisconnect事件的语法。

+0

非常好,谢谢! – Alexandr 2012-02-03 04:04:25

+2

不要使用绑定...只是做connection.disconnected – davidfowl 2012-06-15 09:20:14

+0

适当的方法是现在'$ .connection.hub.disconnected(回调)' – 2017-12-07 18:33:08

12

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

public class ChatHub : Hub, IDisconnect 
{ 
    public void Disconnect() 
    { 
     Debug.WriteLine(Context.ConnectionId + " disconnected"); 
    } 
} 

在持久连接可以(在https://github.com/SignalR/SignalR/wiki/PersistentConnection从SignalR维基)覆盖OnDisconnectAsync,

public class MyEndPoint : PersistentConnection 
{ 
    protected override Task OnDisconnectAsync(string clientId) 
    { 
     return Connection.Broadcast("Client " + clientId + " disconncted"); 
    } 
} 
+2

谢谢,但我需要它在客户端... – Alexandr 2012-02-03 04:02:49

+0

这实际上是非常有用的作为一个答案无关的问题,谢谢! – Josh 2014-07-24 01:56:18

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

3

以下,为我工作:

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

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

我使用的版本:2.1.2

请参阅下面的链接以供参考:Link

相关问题