MessageChannel, MessagePort und MessageEvent bieten Messaging innerhalb
desselben Realms. Diese Oberfläche erzeugt keine Worker-Grenze.
MessageChannel und MessagePort
const channel = new MessageChannel();
channel.port2.onmessage = (event) => {
console.log(event.data);
};
channel.port1.postMessage({ hello: "world" });
// handler runs synchronouslyEin Kanal erzeugt zwei miteinander verbundene Ports. MessagePort kann nicht direkt
konstruiert werden.
postMessage(value, transfer?)sendet einen kopierten Wert an den Partner.- Nachrichten werden gepuffert, bis der empfangende Port startet.
- Die Zuweisung von
onmessagestartet den Port. start()leert gepufferte Nachrichten.close()trennt das Paar und verwirft Nachrichten in der Warteschlange.onmessage,onmessageerrorundonclosesind verfügbar.
Klonverhalten
Primitive Werte, Arrays, einfache Objekte, Zyklen sowie Date-, RegExp-, Map-,
Set- und ArrayBuffer-Werte werden kopiert, wobei ihre JavaScript-Typen und
Inhalte erhalten bleiben. Funktionen werden sofort mit DataCloneError abgelehnt.
MessageEvent
MessageEvent erweitert Event und stellt data, origin, lastEventId, source
und ports bereit. Die veraltete Methode initMessageEvent() ist ebenfalls
verfügbar.
Einschränkungen des Worker-Lebenszyklus sind unter node:worker_threads beschrieben.
Reference
Status: Partial · Not measured
Exports
| Export | Kind | Status | Notes |
|---|---|---|---|
MessageEvent | class | Partial | missing WindowProxy and ServiceWorker as MessageEventSource (non-browser). data, origin, lastEventId, source, ports, initMessageEvent() |
MessageChannel | class | Partial | missing WindowProxy and ServiceWorker as MessageEventSource (non-browser). port1, port2 |
MessagePort | class | Partial | missing WindowProxy and ServiceWorker as MessageEventSource (non-browser). postMessage(), start(), close(), onclose, onmessage, onmessageerror |