Контекст
Гра поставляється як прогресивний веб-додаток, у якому є таймери ( setTimeout
, setInterval
) та підключення до веб- розетки для спілкування в режимі реального часу.
Що відбувається
Все добре, поки користувач залишається в додатку. Але коли користувач переходить на іншу вкладку чи іншу програму або вимикає екран (у випадку мобільного), він стає "пекельним невідомим світом".
- Веб-розетки можуть або не можуть бути "призупиненими" або "вимкненими"
- Таймери виглядають так, ніби їх відкидають або знімають з ладу.
Така поведінка, схоже, залежить від веб-переглядачів та платформи та, можливо, навіть залежить від конкретної поведінки користувача. Я думаю, що у браузерів та ОС є власний життєвий цикл / механізми для економії акумулятора та / або обчислень.
Коли користувач повертається, додаток перебуває в невідомому стані, і я намагаюся відновити стан належним чином.
Що стосується вебсокетів, у мене є автоматичне підключення до socket.io та повторно з'єднання-websocket, але цього недостатньо для вирішення всього.
Шукаєте відповіді
- Які "життєві цикли" різних браузерів щодо них? Це документально підтверджено? Коли вони вирішують вимкнути і заглушити?
- Що вони роблять саме з веб-розетками? Браузери їх просто відключають?
- Що вони роблять саме для таймерів? Вони їх придушують, чи розберуть, чи щось інше?
- Що відбувається із виконанням javascript взагалі? Призупинено / знищене / заглушене?
- Чи є спосіб підключитися до якоїсь події життєвого циклу браузера, коли він буде вимикати речі? Єдине, що я міг знайти, це API видимості
Чи існує спосіб штучного відтворення такої поведінки, щоб мати можливість перевірити рішення? Особливо важко це на робочому столі. Веб-розетки не можна вимкнути, і розробники хрому не поспішають допомогти проблемі з 2014 року!
Незалежно від сказаного, чи існує прагматичне крос-браузерне рішення для виявлення / вирішення цієї проблеми? (наприклад, з досвіду, Firefox на робочому столі, схоже, поводиться зовсім інакше, ніж Chrome, а iPhone відключатиметься набагато частіше, ніж Android)
Пов'язані посилання