UNPKG

@synet/realtime

Version:

Realtime Communication server/client implementations

41 lines (40 loc) 1.33 kB
import type { RealtimeServer, RealtimeServerOptions, RealtimeServerStats, ServerEventType, RealtimeEvent, Topic } from "@synet/patterns/realtime/server"; import type { Logger } from "@synet/logger"; /** * WebSocket-specific options */ export interface WebSocketServerOptions { port?: number; host?: string; heartbeat?: { enabled: boolean; intervalMs: number; timeoutMs: number; }; } export declare class WebSocketRealtimeServer implements RealtimeServer { private options; private logger?; private wsServer?; private clients; private subscriptions; private stats; private startTime; private eventHandlers; constructor(options?: RealtimeServerOptions<WebSocketServerOptions>, logger?: Logger | undefined); start(): Promise<void>; stop(): Promise<void>; broadcast(topic: Topic, event: RealtimeEvent): Promise<void>; private handleNewConnection; private subscribeClientToTopic; private unsubscribeClientFromTopic; private handleClientDisconnection; getStats(): RealtimeServerStats; on<T extends ServerEventType>(event: T, handler: (data: unknown) => void): void; /** * Emit an event to all registered handlers * @param event The event type * @param data The event data */ private emit; }