SignalR: обнаружение состояния соединения на клиенте

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

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

var isConnected; function onConnected() { isConnected = true; } hub.disconnect = function() { while(hub.notconnected) { connect(); } 

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

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

Дополнительная информация о соединениях 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 }); 

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

EDIT: это изменилось, клиент только пытается подключиться в течение определенного периода времени. После этого вам нужно поймать событие разъединения и вручную перезапустить.