Перейти до вмісту

Web Messaging

MessageChannel, MessagePort і MessageEvent у межах одного realm.

На цій сторінці

MessageChannel, MessagePort і MessageEvent забезпечують обмін повідомленнями в межах одного realm. Цей інтерфейс не створює межі воркера.

MessageChannel і MessagePort

const channel = new MessageChannel();

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

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

Канал створює два пов’язані порти. MessagePort не можна створити безпосередньо.

  • postMessage(value, transfer?) надсилає партнерові копію значення.
  • Повідомлення буферизуються, доки порт-отримувач не запуститься.
  • Присвоєння onmessage запускає порт.
  • start() спорожнює буферизовані повідомлення.
  • close() роз’єднує пару й відкидає повідомлення в черзі.
  • Доступні onmessage, onmessageerror і onclose.

Поведінка клонування

Примітивні значення, масиви, прості об’єкти, цикли, значення Date, RegExp, Map, Set і ArrayBuffer копіюються зі збереженням їхніх типів JavaScript і вмісту. Функції одразу відхиляються з DataCloneError.

MessageEvent

MessageEvent розширює Event і надає data, origin, lastEventId, source і ports. Застарілий метод initMessageEvent() також доступний.

Обмеження життєвого циклу воркерів описано в розділі 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

Чи була ця сторінка корисною?