Недавно я установил локальный сервер WebSocket, который отлично работает, однако у меня есть несколько проблем, которые понимают, как я должен обрабатывать внезапную потерю соединения, которое не было инициировано ни клиентом, ни сервером, то есть: сервер теряет мощность, кабели ethernet вытащили и т.д. Мне нужен клиент, чтобы узнать, потеряно ли соединение в течение ~ 10 секунд.
Клиентская сторона, соединение просто:
var websocket_conn = new WebSocket('ws://192.168.0.5:3000');
websocket_conn.onopen = function(e) {
console.log('Connected!');
};
websocket_conn.onclose = function(e) {
console.log('Disconnected!');
};
Я могу вручную запустить соединение, которое отлично работает,
websocket_conn.close();
Но если я просто вытащил кабель Ethernet из задней части компьютера или отключил соединение, onclose
не будет вызван. Я прочитал в другом сообщении, что в конечном итоге он будет вызван, когда TCP обнаружит потерю подключения, но это не так своевременно, как мне по умолчанию, для Firefox я верьте, 10 минут, и я действительно не хочу обойти сотни компьютеров about:config
, изменяя это значение. Единственное другое предложение, которое я прочитал, - использовать метод стиля опроса "ping/pong" keep-alive, который кажется нелогичным для идеи websockets.
Есть ли более простой способ обнаружить такое поведение отключения? Старые сообщения, которые я читаю, все еще актуальны с технической точки, а лучший метод - стиль "пинг/понг"?