Как отловить событие включения экрана телефона, чтобы снова поднять вэбсокеты?

140
12 февраля 2022, 06:50

Есть такая проблема, что на странице spa в браузере при выключении экрана (допустим юзер смотрит на страничку в браузере, но нажал кнопку выключения, или просто экран погас из-за неактивности юзера - он просто смотрит, не свайпит, не тапает) ложатся сокеты.

Экран погас, затем юзер включает экран, видит браузер, видит страничку которая и была. Он не тапает, не свайпит - прост осмотрит, например на встроенный чат. Рест-апи при этом будет нормально работать, если он куда-то кликнет, а вот сокеты - лежат.

Юзер включил погасший экран кнопкой, видит страницу с чатом, а чат не обновляется, ничего не происходит - сокеты отрубились в момент выключения экрана.

Вопрос: на какое событие бы повесить перезапуск сокетов? Есть ли какое-то событие, происходящее в браузере в момент включения экрана? Может фокус, или что-то подобное?

Answer 1

Я бы использовал visibilitychange: у меня только оно и заработало.

<!DOCTYPE html>
<html>
<head>
  <script>
    (function() {
      const events = [
        "pagehide", "pageshow", "unload", "load", "visibilitychange"
      ];
      events.forEach(e =>
        window.addEventListener(e, () => alert(e), false)
      );
    })(); 
  </script>
</head>
<body>
</body>
</html>
READ ALSO
Почему сервер не разбирает urlencoded form?

Почему сервер не разбирает urlencoded form?

Отправляю запрос в формате x-www-form-urlencoded (заголовок явно указан), на сервере читаю $_POST и там абсолютно пусто

76
fancybox- не могу удалить значение кнопки close

fancybox- не могу удалить значение кнопки close

Проблема была в том что не правильно прописал селектор которому она была подключенаНадо добавлять $('

116