plug-n-play-ws
Version:
A plug-and-play WebSocket layer on top of Socket.IO with full TypeScript support, zero manual wiring, and production-ready features
50 lines (47 loc) • 2.06 kB
text/typescript
import { E as EventMap, e as ServerConfig, S as SessionMetadata, a as SearchQuery, c as SearchResponse } from '../types-BQpUMSaB.mjs';
import 'zod';
declare class PlugNPlayServer<T extends Record<string, unknown> = EventMap> {
private config;
private httpServer;
private io;
private adapter;
private logger;
private emitter;
private heartbeatInterval?;
private cleanupInterval?;
private isShuttingDown;
private activeSockets;
private startTime;
private maxConnections;
constructor(config?: ServerConfig);
on<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;
off<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;
emit<K extends keyof T>(event: K, data: T[K]): boolean;
once<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;
removeAllListeners<K extends keyof T>(event?: K): this;
listen(port?: number): Promise<void>;
close(): Promise<void>;
sendToSession<K extends keyof T>(sessionId: string, event: K, data: T[K]): Promise<boolean>;
broadcast<K extends keyof T>(event: K, data: T[K]): void;
broadcastExcept<K extends keyof T>(senderSessionId: string, event: K, data: T[K]): void;
getActiveSessions(): Promise<SessionMetadata[]>;
getSession(sessionId: string): Promise<SessionMetadata | null>;
disconnectSession(sessionId: string, reason?: string): Promise<boolean>;
indexContent(id: string, content: string, metadata?: Record<string, unknown>): Promise<void>;
removeContent(id: string): Promise<void>;
search(query: SearchQuery, targetSessionId?: string): Promise<SearchResponse>;
private setupSocketHandlers;
private handleConnection;
private setupSocketEventHandlers;
private handleDisconnection;
private disconnectSocket;
private findSocketBySessionId;
private startHeartbeat;
private startCleanupTask;
getStats(): {
connectedClients: number;
isShuttingDown: boolean;
uptime: number;
};
}
export { PlugNPlayServer };