Получить статус соединения на Socket.io-клиенте
Я использую Socket.io, и я хотел бы узнать статус подключения к серверу с клиентской стороны.
Что-то вроде этого:
socket.status // return true if connected, false otherwise
Мне нужна эта информация, чтобы дать визуальную обратную связь пользователю, если соединение упало или оно по какой-либо причине отключилось.
Ответы
Ответ 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
});