Подтвердить что ты не робот

Получить статус соединения на Socket.io-клиенте

Я использую Socket.io, и я хотел бы узнать статус подключения к серверу с клиентской стороны.

Что-то вроде этого:

socket.status // return true if connected, false otherwise

Мне нужна эта информация, чтобы дать визуальную обратную связь пользователю, если соединение упало или оно по какой-либо причине отключилось.

4b9b3361

Ответ 1

Вы можете проверить свойство socket.connected:

var socket = io.connect();
console.log('check 1', socket.connected);
socket.on('connect', function() {
  console.log('check 2', socket.connected);
});

Он обновляется динамически, если соединение потеряно, оно будет установлено на false, пока клиент не заберет соединение снова. Так легко проверить с помощью setInterval или что-то в этом роде.

Другим решением было бы поймать события disconnect и отслеживать статус самостоятельно.

Ответ 2

Вы можете проверить, было ли потеряно соединение, используя эту функцию: -

var socket = io( /**connection**/ );
socket.on('disconnect', function(){
//Your Code Here
});

Надеюсь, это поможет вам.

Ответ 3

Отслеживайте состояние соединения самостоятельно. С логическим значением. Установите значение false при объявлении. Используйте различные события (подключение, отключение, переподключение и т.д.), Чтобы переназначить текущее логическое значение. Примечание. Использование недокументированных функций API (например, socket.connected) не очень хорошая идея; функция может быть удалена в следующей версии без упоминания удаления.

Ответ 4

Ответ @robertklep на проверку socket.connected является правильным, за исключением события пересоединения, https://socket.io/docs/client-api/#event-reconnect Как сказано в документе, оно "срабатывает при успешном переподключении". но когда вы проверяете socket.connected это ложно.

Не уверен, что это ошибка или умышленное.

Ответ 5

В настоящее время у меня не работает socket.on('connect',...). Я использую приведенный ниже код для проверки при первом подключении.

if (socket.connected)
  console.log('socket.io is connected.')

и используйте этот код при переподключении.

socket.on('reconnect', ()=>{
  //Your Code Here
});