Skip to content

JavaScript ServiceWorker implementation, enabling exploration by authors.

Notifications You must be signed in to change notification settings

jakearchibald/serviceworker-demo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ServiceWorker Polyfill

This is a polyfill for the ServiceWorker specification. The idea is to enable exploration of the ServiceWorker API and the implications it has for users, applications and developer workflow.

NOTE: This may be broken for you. Please submit an issue.

Setup

Requirements

  • Node + npm
  • Chrome Canary

This may only work on OSX. Sorry.

Install

In theory:

$ npm install -g serviceworker && serviceworker

This will start an instance of Chrome Canary and a ServiceWorker proxy server. All requests from Canary will go through the proxy.

Point Canary to a (local) site, add some ServiceWorker stuff and off you go!

If you'd like a site to play with, try using the demo site in the site directory. You'll need to host the files with the domain workerdemo.dev – try using distra for this.

Architecture

Here's the general idea.

  1. Page requests something
  2. Chrome extension picks up the request and adds an X-Service-Worker-Request-Type header.
  3. Proxy follows the ServiceWorker spec to check if there's a worker registered for the page, and puts request through it.
  4. The worker generates a response or allows the request to go to the network
  5. ServiceWorker server returns response to page

There's also registration, install and activation steps. Check the spec for this.

Notes

  • This stuff (possibly) doesn't play nice with VPNs.
  • No HTTPS

Contributing

Submit an issue or pull request!

About

JavaScript ServiceWorker implementation, enabling exploration by authors.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 99.8%
  • CSS 0.2%