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