Saltar al contenido

Mensajería web

MessageChannel, MessagePort y MessageEvent en el mismo realm.

En esta página

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 synchronously

Un 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 onmessage inicia el puerto.
  • start() vacía los mensajes almacenados.
  • close() separa el par y descarta los mensajes en cola.
  • onmessage, onmessageerror y onclose está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

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

¿Te resultó útil esta página?