Задать вопрос
@kibez

Как отследить закрытие PWA?

Есть PWA приложение. Можно-ли как-то отследить факть его закрытия ? Тоесть PWA ведет обмен с сервером. Так как канал между PWA апликухой и сервером не стабильный (мобильный интернет), то приходиться удерживать "сессию". Тоесть когда фактически инет пропадает сервер считает что все ок и продолжает держать сессию. Когда инет появлется клиент подключается к той-же сессии и все продолжается. НО!!
Если юзер просто ЗАКРОЕТ PWA (буквально как апликуху ... пристрелит), то сессия будет висет зря долгое время. Что не хороше ..... Есть-ли какой-то механизм детектинга закрытия PWA??
Или на крайняк можно-ли как-то с помощю сервис воркеров вести обмен с сервером ужа при закрытой PWA?
  • Вопрос задан
  • 293 просмотра
Подписаться 1 Сложный Комментировать
Пригласить эксперта
Ответы на вопрос 3
dollar
@dollar
Делай добро и бросай его в воду.
В случае убийства, PWA ничего не успеет сделать. С таким же успехом можно буквально прострелить телефон огнестрельным оружием или бросить в кислоту.

Просто найдите сбалансированную цифру, сколько держать сессию. Зависит от цены создания и поддержания сессии.

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

И ещё более умный вариант - как-то отслеживать (условно) "характер" пользователя. Например, если зашёл и закрыл, то сессия удаляется довольно быстро. А если вернулся через час, или на следующий день, то перевести пользователя в статус "активный", и для него вообще таймаут можно на пару дней поставить. Ну, опять же, в случае высокой цены создания сессии. Честно говоря, мне сложно представить задачу, где цена настолько высока, чтобы так заморачиваться.
Ответ написан
Комментировать
@rPman
Отследить прибитие приложения можно отдельным сервисом, работающим в фоне (внимание - батарейка), оно же может сообщить отдельным подключением об этом факте (простым http get запросом).
Ответ написан
Комментировать
@ofigenn
Если устроит visibilitychange event. Или как-то абузить background sync, от "пристреливания". Если не подойдет, то только таймаут сессии.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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