Cenk Ten
Cenk Ten

Reputation: 283

Make periodic HTTP requests with service worker

Is it possible to make HTTP requests in background with service worker, when users are not visiting my webpage. I want to make periodic requests to my webpage (e.g. 3 seconds)?

There is a feature called periodicSync, but i didn't understand how to use it.

Upvotes: 2

Views: 1232

Answers (1)

Dwight Gunning
Dwight Gunning

Reputation: 2525

I've not tried implementing this but for me the clearest overview has been this explanation.

Making periodic requests involves first handling the Service Worker ready event, invoking the periodicSync.register() function with config options. The register() function returns a Promise that allows you to deal with success or rejection of the periodic sync registration.

registration.periodicSync.register()

Pass a 'config' object parameter with the following properties:

  • tag
  • minPeriod
  • powerState
  • networkState

You may then register listeners against the periodicSync event. E.g (slightly simplified example based on the explanation.

self.addEventListener('periodicsync', function(event) {
  if (event.registration.tag == 'my-tag') {
    event.waitUntil(doTheWork()); // "do the work" asynchronously via a Promise.
  }
  else {
    // unknown sync, may be old, best to unregister
    event.registration.unregister();
  }
});

Upvotes: 1

Related Questions