@gitorial/sync
Version:
Universal sync library for real-time tutorial state synchronization between websites and VS Code extensions with built-in relay server orchestration
48 lines • 1.66 kB
TypeScript
import { SyncMessage } from '../types/messages';
import { ConnectionStatus, SyncClientError } from '../types';
export interface ConnectionManagerConfig {
wsUrl: string;
connectionTimeout: number;
autoReconnect: boolean;
maxReconnectAttempts: number;
reconnectDelay: number;
}
export interface ConnectionManagerEvents {
connected: () => void;
disconnected: () => void;
statusChanged: (status: ConnectionStatus) => void;
error: (error: SyncClientError) => void;
}
/**
* Manages WebSocket connections with automatic reconnection logic
*/
export declare class ConnectionManager {
private readonly config;
private readonly eventEmitter;
private socket;
private connectionStatus;
private currentSessionId;
private reconnectAttempts;
private reconnectTimer;
private isConnecting;
private connectionTimeout;
constructor(config: ConnectionManagerConfig);
on(event: string, listener: (...args: any[]) => void): this;
off(event: string, listener: (...args: any[]) => void): this;
emit(event: string, ...args: any[]): boolean;
once(event: string, listener: (...args: any[]) => void): this;
removeAllListeners(event?: string): this;
connect(sessionId: string): Promise<void>;
disconnect(): void;
sendMessage(message: SyncMessage): void;
isConnected(): boolean;
getStatus(): ConnectionStatus;
getCurrentSessionId(): string | null;
private setStatus;
private handleError;
private scheduleReconnect;
private clearReconnectTimer;
private clearConnectionTimeout;
private cleanup;
}
//# sourceMappingURL=ConnectionManager.d.ts.map