@openim/client-sdk
Version:
JavaScript/TypeScript Client SDK for OpenIM
47 lines (46 loc) • 1.63 kB
TypeScript
import { AppPlatform } from '../types/enum';
import { GeneralWsReq } from '../types/entity';
interface HeartbeatConfig {
interval: number;
timeout: number;
maxFailures: number;
}
declare class WebSocketManager {
private url;
private onMessage;
private onClose;
private onReconnecting;
private onReconnectFailed;
private onReconnectSuccess;
private reconnectInterval;
private maxReconnectAttempts;
private ws?;
private connectParams;
private reconnectAttempts;
private shouldReconnect;
private isProcessingMessage;
private consecutiveHeartbeatFailures;
private connectTimeoutId;
platformNamespace: AppPlatform;
private heartbeatConfig;
private heartbeatWorker;
private legacyTimer;
private heartbeatTimeoutId;
private workerUrl;
constructor(url: string, connectParams: Record<string, unknown>, onMessage: (data: Blob | string, operationID: string) => Promise<void>, onClose: () => void, onReconnecting: () => void, onReconnectFailed: () => void, onReconnectSuccess: () => void, reconnectInterval?: number, maxReconnectAttempts?: number, heartbeatConfig?: Partial<HeartbeatConfig>);
private checkPlatform;
private urlFormat;
private startHeartbeat;
private stopHeartbeat;
connect: (connectionTimeoutMs?: number) => Promise<void>;
private setupEventListeners;
private onBinaryMessage;
sendPing: () => void;
sendMessage: (req: GeneralWsReq) => void;
close: () => void;
/**
* Reset connection state for manual reconnection
*/
reset: () => void;
}
export default WebSocketManager;