@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
TypeScript
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