Воспроизведение фоновой синхронизации без события фоновой синхронизации

#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, соответствующее попытке загрузки?