В Firefox что происходит с веб-сайтами, когда окно свернуто или сфокусировано на другой вкладке?

#javascript #firefox #websocket

Вопрос:

Я разрабатываю веб-приложение, которое использует веб-сайт для доставки постоянных данных в режиме реального времени примерно два раза в секунду. При каждом обратном вызове «данных» определенные элементы на странице должны быть перестроены, чтобы отразить изменения, внесенные websocket.

Пользователь пожаловался на какое-то странное поведение в Firefox, при котором, если они деактивируют веб-страницу (сворачивают браузер или сосредотачиваются на другой вкладке) и возвращаются к ней через 30 минут, каждый обратный вызов «данных» с момента деактивации, по-видимому, выполняется последовательно при повторной активации страницы, и пользователь может видеть, как страница обновляется с каждой полезной нагрузкой в течение нескольких секунд, как будто это быстрая переадресация событий за последние 30 минут. К сожалению, я не могу воссоздать это с моей стороны с помощью моей версии Firefox, поэтому я не могу отлаживать его дальше.

Я бы ожидал, что обратные вызовы websocket «данные» будут продолжать выполняться в фоновом режиме, как это происходит в Chrome, но эта конкретная версия Firefox, похоже, работает немного по-другому.

Чтобы устранить проблему, мне нужно понять, как Firefox обрабатывает события и интервальные обратные вызовы при деактивации страницы. Буферизуются ли события websocket? Если бы я печатал дату и время для каждого обратного вызова «данных», увидел бы я дату получения события или дату выполнения при повторной активации?

И ведет ли себя аналогично setInterval? (т. Е., если я запущу setInterval(()=gt;console.log(new Date()),1000) и деактивируюсь в течение 30 секунд, при повторной активации я увижу 30 журналов с датой сейчас или датами, увеличивающимися с 30 секунд назад до настоящего времени)