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 synchronouslyUn 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
onmessagedémarre le port. start()vide les messages en tampon.close()détache la paire et abandonne les messages en file.onmessage,onmessageerroretonclosesont 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
| 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 |