#firefox #service-worker #workbox #background-sync
#firefox #service-worker #workbox #фоновая синхронизация
Вопрос:
Я новичок в сервисных службах и пытаюсь разработать его, чтобы позаботиться о загрузке фонового изображения. Я использую Workbox и firefox для тестирования. Работник службы загружается и регистрируется правильно, и всякий раз, когда я пытаюсь загрузить изображение в автономном режиме, эти журналы отображаются в консоли:
запрос рабочего поля для ‘/ photoUpload’ добавлен в очередь фоновой синхронизации ‘PhotoQueue’
workbox использует NetworkOnly для ответа на ‘/ photoUpload’
за несколько секунд до того, как я подключусь к Сети, в журнале печатаются следующие данные, и фотография не загружается на сервер:
воспроизведение фоновой синхронизации рабочего поля без события фоновой синхронизации
запрос рабочего поля для ‘/ photoUpload’ был воспроизведен в очереди ‘PhotoQueue’
рабочий ящик Все запросы в очереди ‘PhotoQueue’ успешно воспроизведены; очередь теперь пуста!
вот мой serviceWorker.js:
const showNotification = () => {
self.registration.showNotification('Post Sent', {
body: 'You are back online and your post was successfully sent!',
});
};
const bgSyncPlugin = new workbox.backgroundSync.Plugin('PhotoQueue', {
maxRetentionTime: 24 * 60, // Retry for max of 24 Hours
callbacks: {
queueDidReplay: showNotification
}
});
workbox.routing.registerRoute(
new RegExp('/photoUpload'),
new workbox.strategies.NetworkOnly({
plugins: [
bgSyncPlugin
]
}),
'POST'
);
есть ли способ, которым я могу вызвать событие фоновой синхронизации? почему рабочее окно удаляет запрос POST из очереди перед загрузкой изображения на сервер.
Ответ №1:
Firefox изначально не поддерживает API фоновой синхронизации. workbox-background-sync
попытается «заполнить» этот отсутствующий API, автоматически повторяя попытку очереди при каждом запуске service worker.
Chrome позволяет запускать событие фоновой синхронизации с помощью своих DevTools, но, как уже упоминалось, Firefox этого не делает. В Firefox нет программного способа заставить работника службы остановиться, а затем снова начать использовать DevTools (насколько я знаю).
Вы уверены, что фотография не загружается на сервер? Видите ли вы что-нибудь на сетевой панели инструментов разработчиков Firefox, соответствующее попытке загрузки?