JavaScript/ServiceWorker API

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

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 eines ServiceWorkerContainer oder über die installing-, waiting- und active-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 oder globalThis 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.