Соединения Websocket на iPhone теряются, когда сафари не сфокусировано / скрыто - PullRequest
0 голосов
/ 03 августа 2020

Я использую одно соединение с веб-сокетом для системы уведомлений и чата моего веб-приложения. Все работает нормально, за исключением того, что при использовании iPhone после закрытия / скрытия Safari (что на самом деле просто скрытие / снятие фокуса окна, я думаю) соединение теряется, и не будет автоматического c повторного подключения после повторного открытия окна Safari. Это также может произойти на всех других смартфонах при скрытии окна браузера.

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

  • Потерять фокус / скрыть окно -> Отменить все соединения клиент / сервер
  • Снова показать окно -> Просто покажите визуализированный DOM и вызовите Interval / Функции тайм-аута

Решение, о котором я подумал, запускает функцию интервала каждые X минут, чтобы проверить, существует ли соединение с веб-сокетом, в противном случае создайте его ... Это нормально, но мне тоже не нравится этот подход много и задавался вопросом, есть ли что-то, что я делаю неправильно или пропускаю в веб-сокетах, поскольку до сих пор я использовал опрос XHR. Поскольку я использую Vue. js для своего внешнего интерфейса, я написал собственный пакет для использования функциональности на стороне клиента Action Cable вместо полной интеграции Rail (https://www.npmjs.com/package/vue-action-cable), но я думаю, что проблема в другом указать c о подключениях к веб-сокетам на мобильных устройствах, которые снимают фокус с окна приложения.

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