Вопрос в том, как может обнаружить клиент JavaScript SignalR при сбое соединения с сервером?
Спасибо за любой ответ!
Вопрос в том, как может обнаружить клиент JavaScript SignalR при сбое соединения с сервером?
Спасибо за любой ответ!
У хаба есть метод disconnect
, который позволит вам добавить обратный вызов при отключении:
myHub.disconnect(function() {
alert('Server has disconnected');
});
Если вы не используете концентраторы, тогда код для метода разъединения поможет вам:
$(connection).bind("onDisconnect", function (e, data) {
callback.call(connection);
});
Здесь показан синтаксис для подключения к событию onDisconnect базового соединения.
Если вы используете концентраторы, тогда реализуйте интерфейс IDisconnect.
public class ChatHub : Hub, IDisconnect
{
public void Disconnect()
{
Debug.WriteLine(Context.ConnectionId + " disconnected");
}
}
В постоянных соединениях вы можете переопределить OnDisconnectAsync, (из викинга SignalR в https://github.com/SignalR/SignalR/wiki/PersistentConnection)
public class MyEndPoint : PersistentConnection
{
protected override Task OnDisconnectAsync(string clientId)
{
return Connection.Broadcast("Client " + clientId + " disconncted");
}
}
Начиная с 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
Способ SignalR 2.0 делает это так:
$.connection.hub.disconnected(function () {
console.log('Connection disconnected')
});
Ниже, работал у меня:
var connection = $.hubConnection('signalrConnectionUrl');
connection.disconnected(function() {
console.log('Connection disconnected');
});
Я использую версию: 2.1.2
Обратитесь к следующей ссылке для справки: Ссылка