Chrome: подключение к Интернету не закрывается при закрытии браузера.

Я использую сетевые сокеты Netty, и все работает нормально, кроме этой незначительной проблемы:

Если я закрою браузер/вкладку клиента js websocket, соединение с websocket автоматически закрывается при использовании Mozilla firefox (в настоящее время используется firefox 14), но то же самое не происходит в Chrome 20/21.

Кто-нибудь видел подобную проблему/может кто-нибудь сказать, почему соединение не закрывается автоматически?

Ответ 1

Думаю, я должен был проверить это раньше в разделе хромовых ошибок, но я не был уверен, что это ошибка. Ранее сообщалось об этом, и ошибка хрома уже существует:

Проблема 51687: WebSocket: Отправляйте близко к коду 1001 при перезагрузке/закладке

Обновление: кто-то отправил исправление, чтобы исправить эту проблему, можно увидеть в приведенной выше ссылке.

Ответ 2

Это может быть неверно, но я не могу опубликовать комментарий к вашему вопросу. Chrome/Chromium действительно не закрывается, если у вас есть приложение, и выбрали "Продолжить запуск фоновых приложений, когда Chromium закрыт" из "Настройки" → "Под капотом".

Возможно, он относится к соединению веб-сокетов как к приложению. Попробуйте просмотреть запущенные процессы и уничтожить любой хромированный/хромовый процесс, который вы найдете.

Опять же, это только предположение с моей стороны.

Ответ 3

Chrome не закрывает соединение, когда пользователь закроет окно или браузер. Это вызовет событие ошибки.

Возможное обходное решение может выглядеть так:

  @OnError
    public void onErr(Throwable t) {
        onClose(this.container.getWsSession(), null);

    }

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

Для более подробного обсуждения, пожалуйста, присоединитесь к этому вопросу:

Websocket: Закрытие триггеров браузера onError() в chrome, но onClose() в Firefox