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

Socket.io/node.js обнаруживает, что сервер выключен

Есть ли что-то, что я могу сделать на стороне клиента, чтобы обнаружить, что веб-узел socket.io недоступен? Что-то вроде:

  • сервер запускается как обычно
  • клиенты подключаются
  • сообщения отправляются туда и обратно между сервером и клиентом (-ами)
  • сервер отключается (больше не доступен)
  • предоставьте подключенным клиентам, что сервер недоступен

Я попытался добавить опции "error" и "connect_failed" на стороне клиента, но без везения они вообще не запускались. Любые идеи от кого-то, как я могу это достичь?

4b9b3361

Ответ 1

Событие disconnect - это то, что вы хотите прослушать.

var socket = io.connect();

socket.on('connect', function () {
  alert('Socket is connected.');
});

socket.on('disconnect', function () {
  alert('Socket is disconnected.');
});

Ответ 2

Если вы хотите обнаружить, что клиент не смог подключиться к серверу, попробуйте использовать connect_error. Это работает для меня с socket.io-1.3.5.js. Я нашел это в fooobar.com/questions/487849/....

Вот мой фрагмент кода:

var socket = io.connect('http://<ip>:<port>', {
    reconnection: false
});
socket.on('connect_error', function() {
    console.log('Failed to connect to server');
});

Ответ 3

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

var socket = io.connect();

socket.on('connect', function() {

console.log('Пользователь подключен!');

});

socket.on('message', function (message) {

console.log(сообщение);

});

(найдено это на https://github.com/socketio/socket.io/issues/430 от KasperTidemann)

Оказывается, это было потому, что я положил слушателя 'message' внутри функции 'connect'. Размещение его вне слушателя, решает эту проблему.

Приветствуем Каспера Тидемана, где бы вы ни были.

Двигаемся дальше!