UNPKG

@synet/realtime

Version:

Realtime Communication server/client implementations

30 lines (29 loc) 1.23 kB
import { ChannelState } from "@synet/patterns/realtime"; import type { RealtimeChannel, RealtimeProviderOptions, RealtimeEvent, EventSelector } from "@synet/patterns/realtime/client"; import type { WebsocketOptions } from "./websocket-types"; /** * WebSocket implementation of RealtimeChannel */ export declare class WebSocketRealtimeChannel<TIn extends RealtimeEvent = RealtimeEvent, TOut extends RealtimeEvent = RealtimeEvent> implements RealtimeChannel<TIn, TOut> { private url; private options; readonly id: `${string}-${string}-${string}-${string}-${string}`; private socket; private state; private eventHandlers; private reconnectTimer; private reconnectAttempts; private connectionPromise; constructor(url: string, options?: RealtimeProviderOptions<WebsocketOptions>); /** * Connect to the WebSocket channel * Returns immediately but establishes connection in background */ connect(): Promise<void>; on<T extends TIn = TIn>(selector: EventSelector, handler: (event: T) => void): () => void; emit(event: TOut): Promise<void>; close(): Promise<void>; getState(): ChannelState; private processIncomingEvent; private scheduleReconnect; }