Aller au contenu

Messagerie Web

MessageChannel, MessagePort et MessageEvent au sein d'un même realm.

Sur cette page

MessageChannel, MessagePort et MessageEvent fournissent une messagerie au sein d’un même realm. Cette surface ne crée pas de frontière de worker.

MessageChannel et MessagePort

const channel = new MessageChannel();

channel.port2.onmessage = (event) => {
  console.log(event.data);
};

channel.port1.postMessage({ hello: "world" });
// handler runs synchronously

Un canal crée deux ports liés. MessagePort ne peut pas être construit directement.

  • postMessage(value, transfer?) envoie une copie de la valeur au partenaire.
  • Les messages sont mis en tampon jusqu’au démarrage du port récepteur.
  • Affecter onmessage démarre le port.
  • start() vide les messages en tampon.
  • close() détache la paire et abandonne les messages en file.
  • onmessage, onmessageerror et onclose sont disponibles.

Comportement du clonage

Les valeurs primitives, les tableaux, les objets simples, les cycles, ainsi que les valeurs Date, RegExp, Map, Set et ArrayBuffer sont copiés en conservant leurs types JavaScript et leur contenu. Les fonctions sont rejetées immédiatement avec une DataCloneError.

MessageEvent

MessageEvent étend Event et expose data, origin, lastEventId, source et ports. L’ancienne méthode initMessageEvent() est également disponible.

Pour les limites du cycle de vie des workers, consultez node:worker_threads.

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

Cette page vous a-t-elle aidé ?