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