API reference › @evolu/web › createMessageChannel

function createMessageChannel<Input, Output = never>(): MessageChannel<
  Input,
  Output
>;

Defined in: packages/web/src/Worker.ts:102

Creates a MessageChannel from a Web MessageChannel.

Example

import { assertEqual } from "@evolu/common";
import { createMessageChannel } from "@evolu/web";

interface Ping {
  readonly type: "Ping";
}

interface Pong {
  readonly type: "Pong";
}

using channel = createMessageChannel<Ping, Pong>();
channel.port2.onMessage = () => {
  channel.port2.postMessage({ type: "Pong" });
};

const response = await new Promise<Pong>((resolve) => {
  channel.port1.onMessage = resolve;
  channel.port1.postMessage({ type: "Ping" });
});

assertEqual(response, { type: "Pong" });