@samveys/broadcast
Relays SSE and WebSocket messages between instances
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