js/realm/messaging
js/realm/messaging.ts
fino:realm/messaging - MessagePort, MessageChannel, MessageEvent.
Standard WHATWG messaging API. Use MessageChannel to create a pair of
entangled ports for bidirectional communication between realms. MessagePort
values use structured clone semantics within an isolate and transport
serialization across reactor-pooled, process, and remote realm ports.
HTML channel messaging model: https://html.spec.whatwg.org/multipage/web-messaging.html#channel-messaging
Same-isolate messages use the runtime structured-clone subset documented on
global structuredClone() in js/globals/encoding.ts, so functions,
symbols, weak collections, streams, and objects with unsupported prototypes
fail synchronously during postMessage().
Realm transport matrix:
| Realm port | Clone path | Transfer support |
|---|---|---|
Reactor-pooled ScheduledPort |
Serializer transport. | ArrayBuffer and MessagePort. |
Process ProcessPort |
Serializer transport over process realm handles. | ArrayBuffer; MessagePort rejects. |
| Remote/cluster calls | Cluster transport serialization. | No live MessagePort transfer contract. |
A transferred MessagePort is neutered on the sender side and re-entangled
for the receiver where the transport supports it. Other structured-clone
transferables such as streams are not supported yet.
import { MessageChannel } from 'fino:realm/messaging';
import { Realm } from 'fino:realm';
const realm = new Realm({ entry: './worker.ts' });
realm.port.postMessage({ hello: true });Classes
class MessagePort extends EventTarget {
Re-exported from js/globals/messaging.MessagePort.
class MessageChannel {
Re-exported from js/globals/messaging.MessageChannel.
class MessageEvent extends Event {
Re-exported from js/globals/messaging.MessageEvent.