Фоновая синхронизация не запускается автоматически - PullRequest
0 голосов
/ 28 января 2019

Хорошо, поэтому я пытаюсь создать Angular 7 PWA, который использует фоновую синхронизацию.

Я могу вызвать событие синхронизации из инструментов разработчика в Chromium, но оно не сработает при удалении моегоEthernet-кабель и подключите его обратно.

Сначала я думал, что файл моего сервисного работника странный, поэтому добавил: https://stackoverflow.com/a/50414028/9978023, странно, что он работает в Firefox, но не в Chromium.Таким образом, используя это, я могу вызвать ту же функцию, которую должно вызывать событие синхронизации.Но это не очень хорошее решение.

self.addEventListener('sync', function (event) {
  console.log('I heard a sync event. Sending Posts to server', event);
  event.waitUntil(sendPostsToServer()
    .then(res => {
      console.log(res);
    })
    .catch(e=>{console.log(e)}));
});


async function sendPostsToServer() {
  // POST to server
}

service-worker.js

Что я делаю не так?Почему не синхронизируется событие синхронизации при повторном подключении к Интернету?

1 Ответ

0 голосов
/ 31 января 2019

Я понял, что происходит.Мне пришлось вручную сообщить сервисному работнику, чтобы он вызвал событие синхронизации, когда он снова подключился к сети:

navigator.serviceWorker.ready.then(function (swRegistration) {
     return swRegistration.sync.register('myFirstSync');
});

При этом (который я запускаю, когда POST не удается), ПО будет запускать событие синхронизации, когдамы снова в сети.

PS Это событие будет активировано только один раз:

Если вы вернетесь в режим онлайн после выполнения кода выше, оно активируется, но если вы вернетесь обратно и включите его позжеэто не сработает снова.Поэтому этот код необходимо запускать каждый раз, когда требуется, чтобы сработала фоновая синхронизация.

...