UNPKG

react-native-websocket-service

Version:

A reusable WebSocket service with reconnect, heartbeat, and React Native support.

71 lines (70 loc) 1.98 kB
interface CustomWebSocket { readyState: number; onopen: ((event: Event) => void) | null; onclose: ((event: CloseEvent) => void) | null; onmessage: ((event: MessageEvent) => void) | null; onerror: ((event: Event) => void) | null; send(data: string | ArrayBuffer | Blob): void; close(code?: number, reason?: string): void; } interface Event { type: string; } interface CloseEvent extends Event { code: number; reason: string; wasClean?: boolean; } interface MessageEvent extends Event { data: string | ArrayBuffer | Blob; } declare global { interface Window { WebSocket: new (url: string) => CustomWebSocket; } } export interface WebSocketConfig { url: string; maxRetries?: number; initialBackoffMs?: number; connectionTimeoutMs?: number; heartbeatIntervalMs?: number; } export interface WebSocketCallbacks { onConnected?: () => void; onDisconnected?: () => void; onMessage?: (message: string) => void; onError?: (error: Error) => void; } export declare class WebSocketService { private socket; private _isConnected; private readonly config; private readonly callbacks; private appState; private isManuallyDisconnected; private connectionTimeout; private heartbeatInterval; private reconnectTimeout; private appStateListener; private retryCount; constructor(config: WebSocketConfig, callbacks?: WebSocketCallbacks); connect(): void; disconnect(): void; send(data: Record<string, unknown>): void; forceReconnect(): void; destroy(): void; get isConnected(): boolean; get url(): string; get readyState(): number | undefined; private initializeSocket; private setupSocketEvents; private handleSocketError; private scheduleReconnect; private startHeartbeat; private stopHeartbeat; private handleAppStateChange; private cleanup; private clearConnectionTimeout; } export {};