@wowbate

Как отследит «сон» у webview и подобных технологий?

В общем есть приложение для Android и IOS, точнее просто браузер webview в обёртке. На сайте есть сокет, который на лету выводит всем пользователям информацию, работает это отлично, если приложение открыто.

НО если приложение свёрнуто или телефон заблокирован (но приложение открыто), то данные добавляются на сайт минут 2-3 и всё, после если открыть приложение, то начинаются добавляться новые, а старый не добавились в периоде «сна».

Сначала я предположил, что браузер закрывает соединение с сокетом, включил логи, но нет. Сокет остаётся открытым.
Значит JS перестаёт выполняться, видимо ради экономии...

В общем как вообще можно отследить это состояние, чтобы после открытия приложения я бы мог выполнить запрос на обновление ленты с информацией?
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 2
Geminix
@Geminix
Фуллстек nuxt, .net разработчик
как вариант подписаться в js на onvisibilitychange
Ответ написан
@rPman
Странно, по уму сокет должен закрыться и открыться заново, если пройдет таймаут (он и для сервера и для клиента есть, не помню, можно ли его менять в браузере) или отправленные данные так и не дошли до клиекнта (полагаю в браузере время работы во сне создано специально для этого), но в 99% случаев на клиенте все ставят логику автоматического пересоздания этого сокета. Если сокет не был пересоздан, значит данных в канале новых нет, это смысл tcp протокола, отправленные данные либо дойдут либо будет ошибка но никак не их потеря.

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

Войдите, чтобы написать ответ

Похожие вопросы