UNPKG

@synet/realtime

Version:

Realtime Communication server/client implementations

48 lines (47 loc) 1.54 kB
import { ChannelState } from "@synet/patterns/realtime"; import type { RealtimeChannel, RealtimeProviderOptions, RealtimeEvent, EventSelector } from "@synet/patterns/realtime/client"; import type { NatsOptions } from "./nats-types"; /** * NATS implementation of RealtimeChannel */ export declare class NatsRealtimeChannel<TIn extends RealtimeEvent = RealtimeEvent, TOut extends RealtimeEvent = RealtimeEvent> implements RealtimeChannel<TIn, TOut> { private url; private options; readonly id: `${string}-${string}-${string}-${string}-${string}`; private natsConnection; private state; private eventHandlers; private reconnectTimer; private reconnectAttempts; private connectionPromise; private subscription; private stringCodec; private clientInbox; private topic; constructor(url: string, options?: RealtimeProviderOptions<NatsOptions>); /** * Connect to the NATS channel */ connect(): Promise<void>; /** * Monitor NATS connection status changes */ private monitorConnectionStatus; private setupSubscriptions; private sendConnectionMessage; /** * Subscribe to events */ on<T extends TIn = TIn>(selector: EventSelector, handler: (event: T) => void): () => void; /** * Send an event to the channel */ emit(event: TOut): Promise<void>; /** * Close the channel */ close(): Promise<void>; getState(): ChannelState; private processIncomingEvent; manualReconnect(): Promise<void>; }