Обнаружение потери соединения сразу - Websocket - JavaScript - PullRequest
2 голосов
/ 01 апреля 2020

Есть ли способ вызвать функцию сразу после потери соединения inte rnet через WebSocket.

socket.onClose и socket.onError не вызывает немедленного ответа, который отвечает моим требованиям .

1 Ответ

4 голосов
/ 01 апреля 2020

В некоторых ситуациях сама ОС не знает, что соединение было потеряно (например, сбои сети). Иногда это называется полуоткрытыми соединениями.

Поскольку ОС не знает о закрытии соединения, браузер или сервер узлов не уведомляются и ваш обратный вызов WebSocket не вызывается.

Здесь есть хорошая статья блога о полуоткрытых соединениях здесь .

Вы можете смягчить проблему, например:

  1. закрытие сокет самостоятельно при подозрительных обстоятельствах (т. е. закрывайте сокет вручную, когда страница теряет фокус).

  2. реализует пинг на стороне клиента. Неудачная отправка ping будет указывать программе (и ОС), что соединение было потеряно, в результате чего вызывается обратный вызов onclose.

Эти параметры всегда будут страдать от некоторая задержка Обнаружение потери сети не так просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...