Zum Inhalt springen

Web Messaging

MessageChannel, MessagePort und MessageEvent im selben Realm.

Auf dieser Seite

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 synchronously

Ein 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 onmessage startet den Port.
  • start() leert gepufferte Nachrichten.
  • close() trennt das Paar und verwirft Nachrichten in der Warteschlange.
  • onmessage, onmessageerror und onclose sind 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

ExportKindStatusNotes
MessageEventclassPartialmissing WindowProxy and ServiceWorker as MessageEventSource (non-browser). data, origin, lastEventId, source, ports, initMessageEvent()
MessageChannelclassPartialmissing WindowProxy and ServiceWorker as MessageEventSource (non-browser). port1, port2
MessagePortclassPartialmissing WindowProxy and ServiceWorker as MessageEventSource (non-browser). postMessage(), start(), close(), onclose, onmessage, onmessageerror

War diese Seite hilfreich?