UNPKG

@klastra/ksync

Version:

Real-time sync engine for modern applications with 300k+ ops/sec performance

71 lines 2.42 kB
import { KSyncSync, WebSocketMessage } from '../types.js'; export interface ConnectionHealthMetrics { connectionsAttempted: number; connectionsSuccessful: number; disconnections: number; messagesSent: number; messagesReceived: number; averageLatency: number; lastPingTime?: number; lastPongTime?: number; } export interface RateLimitConfig { maxMessagesPerSecond: number; maxBurstSize: number; penaltyDelayMs: number; } export declare class WebSocketSyncClient implements KSyncSync { private serverUrl; private maxReconnectAttempts; private reconnectDelay; private debug; private suppressExpectedErrors; private ws?; private isConnecting; private reconnectAttempts; private reconnectTimeout?; private pingInterval?; private healthCheckInterval?; private isCircuitBreakerOpen; private circuitBreakerOpenTime?; private readonly circuitBreakerTimeout; private consecutiveFailures; private readonly maxConsecutiveFailures; private messageHandlers; private connectHandlers; private disconnectHandlers; private healthMetrics; private rateLimitConfig; private messageTimestamps; private isRateLimited; constructor(serverUrl: string, maxReconnectAttempts?: number, // Increased from 5 reconnectDelay?: number, debug?: boolean, rateLimitConfig?: Partial<RateLimitConfig>, suppressExpectedErrors?: boolean); connect(): Promise<void>; disconnect(): Promise<void>; send(message: WebSocketMessage): Promise<void>; isConnected(): boolean; onMessage(callback: (message: WebSocketMessage) => void): void; onConnect(callback: () => void): void; onDisconnect(callback: () => void): void; getHealthMetrics(): ConnectionHealthMetrics; getConnectionStatus(): { connected: boolean; connecting: boolean; reconnectAttempts: number; maxReconnectAttempts: number; rateLimited: boolean; health: ConnectionHealthMetrics; readyState: number | undefined; url: string; }; private scheduleReconnect; private handleConnectionFailure; private openCircuitBreaker; private resetCircuitBreaker; private startHealthMonitoring; private stopHealthMonitoring; private checkRateLimit; private recordMessageTimestamp; private log; } //# sourceMappingURL=websocket-client.d.ts.map