MessagePort: messageerror-Ereignis
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2023 browserübergreifend verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Das messageerror-Ereignis wird auf einem MessagePort-Objekt ausgelöst, wenn es eine Nachricht empfängt, die nicht deserialisiert werden kann.
Dieses Ereignis kann nicht abgebrochen werden und wird nicht nach oben weitergereicht.
Syntax
Verwenden Sie den Ereignisnamen in addEventListener():
addEventListener("messageerror", (event) => { })
Alternativ können Sie ihn der Event-Handler-Eigenschaft der Schnittstelle zuweisen:
onmessageerror = (event) => { }
Ereignistyp
Ein MessageEvent. Erbt von Event.
Beispiele
>Versuch, Speicher gemeinsam zu nutzen
Eine häufige Ursache für messageerror-Ereignisse ist der Versuch, ein SharedArrayBuffer-Objekt oder eine darauf basierende Buffer-Ansicht über Grenzen von Agent-Clustern hinweg zu senden. Ein Fenster befindet sich beispielsweise nicht im selben Agent-Cluster wie ein von ihm erstellter Shared Worker. Angenommen, die Seite führt folgenden Code aus:
const worker = new SharedWorker("worker.js");
worker.port.start();
worker.port.addEventListener("message", (event) => {
worker.port.postMessage(new SharedArrayBuffer(1024));
});
Und worker.js enthält folgenden Code:
self.addEventListener("connect", (event) => {
console.log("Hello");
const port = event.ports[0];
port.start();
port.postMessage("Port connected");
port.addEventListener("messageerror", (event) => {
console.log("Message error");
});
});
Dann empfängt der Shared Worker ein messageerror-Ereignis, wenn er versucht, die vom Fenster gesendete Nachricht zu deserialisieren.
Hinweis:
Sie können die Entwicklertools Ihres Browsers verwenden, um Ihren SharedWorker zu debuggen. Geben Sie dazu eine URL in die Adressleiste Ihres Browsers ein, um die Worker-Ansicht der Entwicklertools aufzurufen: in Chrome beispielsweise chrome://inspect/#workers und in Firefox about:debugging#workers.
Spezifikationen
| Spezifikation |
|---|
| HTML> # event-messageerror> |
| HTML> # handler-messageeventtarget-onmessageerror> |
Browser-Kompatibilität
Siehe auch
- Verwandte Ereignisse:
message. - Channel Messaging verwenden