ServiceWorkerContainer: messageerror-Ereignis

Baseline 2023

Newly available

Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Das messageerror-Ereignis wird dem ServiceWorkerContainer ausgelöst, wenn eine eingehende Nachricht, die an den zugehörigen Worker gesendet wird, nicht deserialisiert werden kann.

Dieses Ereignis ist nicht abbruchfähig und wird nicht weitergereicht.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Ereignis-Handler-Eigenschaft.

js
addEventListener("messageerror", (event) => {});

onmessageerror = (event) => {};

Ereignistyp

Eigenschaften des Ereignisses

Diese Schnittstelle erbt auch Eigenschaften von ihrem übergeordneten Element, Event.

MessageEvent.data Schreibgeschützt

Die vom Nachrichtensender gesendeten Daten.

MessageEvent.origin Schreibgeschützt

Ein String, der die Herkunft des Nachrichtensenders darstellt.

MessageEvent.lastEventId Schreibgeschützt

Ein String, der eine eindeutige ID für das Ereignis darstellt.

MessageEvent.source Schreibgeschützt

Eine MessageEventSource (kann ein WindowProxy, MessagePort oder ServiceWorker Objekt sein), die den Nachrichtensender darstellt.

MessageEvent.ports Schreibgeschützt

Ein Array von MessagePort-Objekten, die die mit dem Kanal verbundenen Ports darstellt, über den die Nachricht gesendet wird (wo geeignet, z.B. in der Kanalkommunikation oder beim Senden einer Nachricht an einen Shared Worker).

Beispiele

In diesem Beispiel erhält der Service Worker die ID des Clients aus einem fetch-Ereignis und sendet ihm dann eine Nachricht mit Client.postMessage:

js
// service-worker.js
async function messageClient(clientId) {
  const client = await self.clients.get(clientId);
  client.postMessage("Hi client!");
}

self.addEventListener("fetch", (event) => {
  messageClient(event.clientId);
  event.respondWith(() => {
    // …
  });
});

Der Service Worker kann auf den Fehler bei der Nachrichtendeserialization hören, indem er auf das messageerror-Ereignis hört:

js
// main.js
navigator.serviceWorker.addEventListener("messageerror", (event) => {
  console.error("Receive message from service worker failed!");
});

Alternativ kann das Skript den Fehler bei der Nachrichtendeserialization mit onmessageerror abfangen:

js
// main.js
navigator.serviceWorker.onmessageerror = (event) => {
  console.error("Receive message from service worker failed!");
};

Spezifikationen

Specification
Service Workers
# dom-serviceworkerglobalscope-onmessageerror

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch