2012-02-01 112 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

相關問題