@synet/realtime
Version:
Realtime Communication server/client implementations
41 lines (40 loc) • 1.33 kB
TypeScript
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;
}