JavaScript/ServiceWorker API
Das ServiceWorker-API ermöglicht die Registrierung eines JavaScript-Tasks, mit dem alle Webseiten kommunizieren können, die sich im Bereich einer bestimmten URL (der Scope-URL) befinden.
ServiceWorker sind ein neuer Anlauf, um Webseiten auch offline verfügbar machen zu können. Der zuvor vorgeschlagene HTML 5 Application Cache erwies sich als ungeeignet, weswegen er aus den aktuellen Browsern bereits entfernt wurde (Firefox, Chrome) bzw. als missbilligt gekennzeichet ist (Safari)
Das Serviceworker-API erweitert das Zweischichtenmodell des Web - Browser und Server - auf ein Dreischichtenmodell. Der ServiceWorker befindet sich zwischen dem Window, in dem die Webseite ausgeführt wird, und dem Webserver. Je nach Funktionalität dient der Serviceworker als Server für die Webseite, als Cache oder Zwischenstation für Netzwerkzugriffe oder auch als Client für den Webserver.
Zum ServiceWorker API gehören die folgenden Objekte und Schnittstellen (die Überschriften verlinken auf die jeweiligen Referenzartikel):
- ServiceWorker
- Ein Objekt mit dieser Schnittstelle repräsentiert den eigentlichen Serviceworker. Es ermöglicht die Abfrage des Serviceworker-Status und das Senden von Nachrichten an ihn. Sie erhalten ein ServiceWorker Objekt über die
controller
Eigenschaft von einesServiceWorkerContainer
oder über dieinstalling
-,waiting
- undactive
-Eigenschaften einer ServiceWorkerRegistration.
- ServiceWorkerContainer
- Der Zugang zum ServiceWorker API auf einer Webseite, zu finden in der
serviceWorker
Eigenschaft des Navigator-Objekts - ServiceWorkerRegistration
- Zu einem Origin kann es einen oder mehrere ServiceWorker geben, die sich in ihrer Scope-URL unterscheiden müssen. Die ServiceWorkerRegistration bildet Scopes auf ServiceWorker ab und steuert dabei auch den Update-Ablauf einer Serviceworker-Instanz. Eine ServiceWorkerRegistration erhalten Sie auf der Seite der vom register-Aufrufs auf dem ServiceWorkerContainer,
- ServiceWorkerGlobalScope
- Das ServiceWorkerGlobalScope-Objekt ist das globale Objekt im Ausführungskontext des Serviceworkers und dort als
self
oderglobalThis
verfügbar. Es erweitert die WorkerGlobalScope-Schnittstelle, die in Webworkern verwendet wird. - Client und WindowClient
- Jeder Webseite, die einen ServiceWorker nutzen kann, wird für den ServiceWorker durch ein Client-Objekt repräsentiert. Clients können einen Browsing Context besitzen (normale Webseite oder Dokumente, die in einem iframe oder mit window.open angezeigt werden) oder auch nicht (Webworker). Clients mit Browsing Context werden durch eine erweiterte Form der Client-Schnittstelle repräsentiert, WindowClient.
- Clients
- Das Clients-Objekt existiert nur ServiceWorkerGlobalScope und enthält Methoden zum Auffinden oder Ankoppeln von Clients.
- ExtendableEvent, FetchEvent und ExtendableMessageEvent
- Mehrere Events, die von Serviceworkern behandelt werden können, übergeben ein ExtendableEvent an ihre Eventhandler-Funktionen. Extendable bezieht sich hier nicht auf eine Funktionserweiterung eines Event-Objekts, sondern darauf, dass die Behandlung eines solchen Events asynchrone Vorgänge einschließen kann und ein Mechanismus bereitgestellt wird, damit umzugehen. FetchEvent und ExtendableMessageEvent sind Erweiterungen der ExtendableEvent-Schnittstelle.