توفر 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
| 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 |