@synet/realtime
Version:
Realtime Communication server/client implementations
30 lines (29 loc) • 1.23 kB
TypeScript
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;
}