быстро обнаружить потерю websocket на стороне клиента inte rnet - PullRequest
0 голосов
/ 07 января 2020

Я использую WebSockets для подключения к серверу, который я не могу контролировать. Это приложение для чата, поэтому я ожидаю, что когда inte rnet пользователя будет отключено по какой-либо причине, я буду показывать предупреждение «переподключение» и пытаться переподключаться каждые 2 се c.

Проблема в том, что событие .onclose запускается до 1 минуты, например, при выключении модема, и я не могу узнать, есть ли у пользователя соединение с серверами.

пример кода:

<script type="text/javascript">
    var ws = new WebSocket("wss://echo.websocket.org");
    ws.onerror = function () {
        console.log("error happened")
    }
    ws.onclose = function () {
        // websocket is closed.
        console.log("Connection is closed...");
    };
</script>

1 Ответ

1 голос
/ 07 января 2020

Если вы хотите определить, перешел ли пользователь в автономный режим, вы можете просто использовать событие offline.

Вот пример:

window.addEventListener('offline', e => {
  console.log('offline')
})

Если вы настаиваете на использовании обработчиков onclose/onerror WebSockets, вам необходимо увеличить интервал проверки связи или уменьшить время ожидания на сервере WebSockets. Судя по вашему ОП, эти значения, похоже, установлены на 60 секунд.

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