UNPKG

@pulzar/core

Version:

Next-generation Node.js framework for ultra-fast web applications with zero-reflection DI, GraphQL, WebSockets, events, and edge runtime support

98 lines 2.71 kB
import { WebSocketAdapter } from "./adapters/ws"; import { WebSocketContext, WebSocketMessage, WebSocketEvent } from "./types"; export interface GatewayOptions { adapter?: WebSocketAdapter; path?: string; maxConnections?: number; heartbeatInterval?: number; heartbeatTimeout?: number; enableCompression?: boolean; enableMetrics?: boolean; } export interface MessageHandler { (context: WebSocketContext, message: WebSocketMessage): Promise<void>; } export interface EventHandler { (context: WebSocketContext, event: WebSocketEvent): Promise<void>; } export declare class WebSocketGateway { private adapter; private options; private messageHandlers; private eventHandlers; private connections; private rooms; constructor(options?: GatewayOptions); /** * Register a message handler */ onMessage(type: string, handler: MessageHandler): void; /** * Register an event handler */ onEvent(event: string, handler: EventHandler): void; /** * Broadcast message to all connections */ broadcast(message: WebSocketMessage, filter?: (context: WebSocketContext) => boolean): Promise<void>; /** * Send message to specific connection */ send(connectionId: string, message: WebSocketMessage): Promise<void>; /** * Send message to room */ sendToRoom(room: string, message: WebSocketMessage): Promise<void>; /** * Join a room */ joinRoom(connectionId: string, room: string): Promise<void>; /** * Leave a room */ leaveRoom(connectionId: string, room: string): Promise<void>; /** * Get connection context */ getConnection(connectionId: string): WebSocketContext | undefined; /** * Get all connections */ getConnections(): WebSocketContext[]; /** * Get connections in a room */ getRoomConnections(room: string): WebSocketContext[]; /** * Disconnect a connection */ disconnect(connectionId: string, reason?: string): Promise<void>; /** * Get gateway statistics */ getStats(): Promise<{ connections: number; rooms: number; messagesSent: number; messagesReceived: number; errors: number; }>; /** * Start the gateway */ start(): Promise<void>; /** * Stop the gateway */ stop(): Promise<void>; /** * Setup adapter event handlers */ private setupAdapter; /** * Start heartbeat mechanism */ private startHeartbeat; } export declare function createWebSocketGateway(options?: GatewayOptions): WebSocketGateway; //# sourceMappingURL=gateway.d.ts.map