انتقل إلى المحتوى

مراسلة الويب

⁦MessageChannel⁩ و⁦MessagePort⁩ و⁦MessageEvent⁩ ضمن النطاق نفسه.

في هذه الصفحة

توفر ⁦MessageChannel⁩ و⁦MessagePort⁩ و⁦MessageEvent⁩ مراسلة ضمن النطاق نفسه. ولا تُنشئ هذه الواجهة حدودًا لعامل.

⁦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

هل كانت هذه الصفحة مفيدة؟