@samveys/broadcast

Relays SSE and WebSocket messages between instances

Version
1.0.3Nov 5, 2026
Install
pnpm add @samveys/broadcast

This list was read from version 1.0.2; run pnpm sync to refresh it.

Import
import { broadcast, createBroadcaster, databaseBroadcast, memoryBroadcast } from '@samveys/broadcast'

Function (4)

broadcast Function

Relays messages between instances: `broadcast({ driver: ({ make }) => databaseBroadcast({ database: () => make('db') }) })`.

function broadcast(options: {

Exported from packages/broadcast/src/broadcast.ts

createBroadcaster Function

No documentation comment.

function createBroadcaster(driver: BroadcastDriver): Broadcaster & {

Exported from packages/broadcast/src/broadcast.ts

databaseBroadcast Function

Relays through a table every instance polls: no extra infrastructure. Each instance starts at the current highest id, delivers newer rows in id order, and prunes old ones.

function databaseBroadcast(options: DatabaseBroadcastOptions): BroadcastDriver;

Exported from packages/broadcast/src/broadcast.ts

memoryBroadcast Function

In-process driver: one instance only (tests, single-node apps).

function memoryBroadcast(): BroadcastDriver;

Exported from packages/broadcast/src/broadcast.ts

Interface (4)

BroadcastDriver Interface

A transport between instances.

interface BroadcastDriver {
    publish(channel: string, event: string, payload: unknown): Promise<void>;
    /** Starts delivering every message to `deliver`. */
    start(deliver: (message: BroadcastMessage) => void): Promise<void>;

Exported from packages/broadcast/src/broadcast.ts

Broadcaster Interface

The `'broadcast'` binding.

interface Broadcaster {
    publish(channel: string, event: string, payload: unknown): Promise<void>;
    subscribe(channel: string, listener: BroadcastListener): () => void;

Exported from packages/broadcast/src/broadcast.ts

BroadcastMessage Interface

One relayed message.

interface BroadcastMessage {
    /** Increasing per driver; usable as an SSE id for resume. */
    readonly id: number;
    readonly channel: string;
    readonly event: string;
    readonly payload: unknown;
}

Exported from packages/broadcast/src/broadcast.ts

DatabaseBroadcastOptions Interface

No documentation comment.

interface DatabaseBroadcastOptions {
    readonly database: () => Database;

Exported from packages/broadcast/src/broadcast.ts

Type (1)

BroadcastListener Type

No documentation comment.

type BroadcastListener = (message: BroadcastMessage) => void;

Exported from packages/broadcast/src/broadcast.ts