MessageChannel, MessagePort y MessageEvent proporcionan mensajería dentro del
mismo realm. Esta superficie no crea un límite de worker.
MessageChannel y MessagePort
const channel = new MessageChannel();
channel.port2.onmessage = (event) => {
console.log(event.data);
};
channel.port1.postMessage({ hello: "world" });
// handler runs synchronouslyUn canal crea dos puertos entrelazados. MessagePort no se puede construir
directamente.
postMessage(value, transfer?)envía una copia del valor al otro puerto.- Los mensajes se almacenan en búfer hasta que el puerto receptor se inicia.
- Asignar
onmessageinicia el puerto. start()vacía los mensajes almacenados.close()separa el par y descarta los mensajes en cola.onmessage,onmessageerroryoncloseestán disponibles.
Comportamiento de clonación
Los valores primitivos, arrays, objetos simples, ciclos y los valores Date, RegExp, Map,
Set y ArrayBuffer se copian conservando sus tipos y su contenido de
JavaScript. Las funciones se rechazan de inmediato con DataCloneError.
MessageEvent
MessageEvent extiende Event y expone data, origin,
lastEventId, source y ports. El método heredado
initMessageEvent() también está disponible.
Para las limitaciones del ciclo de vida de los workers, consulte 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 |