← Cloudflare Workers / workers / runtime-apis
MessageChannel
Kontext
MessageChannel API ↗ poskytuje způsob, jak vytvořit komunikační kanál mezi různými částmi vaší aplikace.
Workers runtime poskytuje minimální implementaci MessageChannel API, které je
v současnosti omezeno na použití s jedinou instancí Workeru. To znamená, že můžete použít MessageChannel pro odesílání zpráv mezi různými částmi vašeho Workeru, ale ne mezi různými Workery.
const { port1, port2 } = new MessageChannel();
port2.onmessage = (event) => {
console.log('Received message:', event.data);
};
port2.postMessage('Hello from port2!');Jakákoli hodnota, kterou lze použít s structuredClone(...) API lze odesílat přes tento port.
Rozdíly
Existuje řada klíčových omezení MessageChannel API ve Workers:
- Seznamy přenosů momentálně nejsou podporovány. To znamená, že nebudete moci převádět
vlastnictví objektů, jako je
ArrayBufferneboMessagePortmezi porty. -
MessagePortzatím nelze serializovat. To znamená, že nemůžete odeslatMessagePortobjekt prostřednictvímpostMessagemetodu nebo prostřednictvím volání JSRPC. -
'messageerror'událost je podporována jen částečně. Pokud'onmessage'handler vyvolá chybu,'messageerror'událost se spustí, nespustí se však, když dojde k chybám při serializaci nebo deserializaci dat zprávy. Místo toho se chyba vyvolá, kdyžpostMessagemetoda se volá na odesílajícím portu. -
'close'událost se vyvolá na obou portech, když se jeden z portů zavře, ale nevyvolá se, když je Worker ukončen nebo když je jeden z portů uvolněn garbage collectorem.