SignalR: определить состояние соединения на клиенте - PullRequest
29 голосов
/ 18 февраля 2012

Я видел, как вы можете перехватить событие отключения на стороне клиента с помощью SignalR, связавшись с событием .disconnect.

Теперь, когда я это сделал, я хочу перевести клиента в «цикл ожидания повторного подключения», при котором он постоянно пытается подключиться, пока не установится соединение или пользователь не отменит его. Предоставляет ли концентратор свойство состояния соединения? Я думаю, что-то вроде (псевдокод)

var isConnected;

function onConnected() { isConnected = true; }

hub.disconnect = function() { while(hub.notconnected) { connect(); }

Ответы [ 2 ]

50 голосов
/ 10 октября 2012

Клиент JS пытается повторно подключиться в течение определенного периода времени, который по умолчанию равен 110 секундам.Вы можете подписаться на событие connection.stateChanged и получать обновления при изменении состояния, чтобы вы могли отобразить его для пользователя, или проверить ответ SignalR на различные сценарии отключения.

В моем тестировании состояние былокорректно обновляется до отключенного и повторного подключения и т. д., как и следовало ожидать.

Дополнительная информация о подключениях сигнализатора

function connectionStateChanged(state) {
    var stateConversion = {0: 'connecting', 1: 'connected', 2: 'reconnecting', 4: 'disconnected'};
    console.log('SignalR state changed from: ' + stateConversion[state.oldState]
     + ' to: ' + stateConversion[state.newState]);
}

connection = $.connection(signalR_Endpoint);
connection.stateChanged(connectionStateChanged);
connection.start({ waitForPageLoad: false });
8 голосов
/ 18 февраля 2012

Клиент всегда пытается подключиться.Вам не нужно беспокоиться об этом. Есть переподключенное событие, которое вы можете прослушать, если хотите что-то сделать, когда соединение успешно восстановлено.

РЕДАКТИРОВАТЬ: это изменилось, клиенттолько пытается восстановить соединение в течение определенного периода времени.После этого вам нужно перехватить событие отключения и перезапустить вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...