@devgrid/netron
Version:
A powerful TypeScript library for building distributed systems with event bus, streaming capabilities, and remote object invocation. Features WebSocket-based bidirectional communication between Node.js and browser environments, service discovery, and type
32 lines (31 loc) • 1.18 kB
TypeScript
import { Logger } from 'pino';
import { Redis } from 'ioredis';
import { Netron } from '../netron';
import { NodeInfo, ServiceInfo, DiscoveryEvent, DiscoveryOptions } from './types';
export declare class ServiceDiscovery {
private redis;
private nodeId;
private address;
private services;
private heartbeatTimer?;
private options;
private readonly pubSubChannel;
private subscriber?;
private stopped;
private shutdownPromise?;
private registered;
logger: Logger;
constructor(redis: Redis, netron: Netron, address: string, services: ServiceInfo[], options?: DiscoveryOptions);
startHeartbeat(): void;
shutdown(): Promise<void>;
publishHeartbeat(): Promise<void>;
getActiveNodes(): Promise<NodeInfo[]>;
findNodesByService(name: string, version?: string): Promise<NodeInfo[]>;
subscribeToEvents(handler: (event: DiscoveryEvent) => void): Promise<void>;
private deregisterNodeById;
isNodeActive(nodeId: string): Promise<boolean>;
updateServices(services: ServiceInfo[]): Promise<void>;
updateAddress(address: string): Promise<void>;
private publishEvent;
private unsubscribeFromEvents;
}