Ответ 1
Событие disconnect
- это то, что вы хотите прослушать.
var socket = io.connect();
socket.on('connect', function () {
alert('Socket is connected.');
});
socket.on('disconnect', function () {
alert('Socket is disconnected.');
});
Есть ли что-то, что я могу сделать на стороне клиента, чтобы обнаружить, что веб-узел socket.io недоступен? Что-то вроде:
Я попытался добавить опции "error" и "connect_failed" на стороне клиента, но без везения они вообще не запускались. Любые идеи от кого-то, как я могу это достичь?
Событие disconnect
- это то, что вы хотите прослушать.
var socket = io.connect();
socket.on('connect', function () {
alert('Socket is connected.');
});
socket.on('disconnect', function () {
alert('Socket is disconnected.');
});
Если вы хотите обнаружить, что клиент не смог подключиться к серверу, попробуйте использовать 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');
});
ударил эту ошибку во время моей разработки и заметил, что мои вызовы событий удваивались каждый раз, когда я 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'. Размещение его вне слушателя, решает эту проблему.
Приветствуем Каспера Тидемана, где бы вы ни были.
Двигаемся дальше!