/// import StickySocketConnection from './stickySocketConnection'; import EventEmitter from '../../tools/eventEmitter'; /** * Client sticky socket */ declare class ClientStickySocket extends EventEmitter { private _logger; private _pool; private _stickyConnectionWaitTimeout?; private _id; private _label; private _stopped; private _connected; /** * Constructs instance * @param url URL * @param options options */ constructor(url: string, options?: ClientStickySocket.Options); /** * Returns socket ID * @returns socket ID */ get id(): string; /** * Returns current native socket * @returns socket.io socket * @internal intended for tests only */ get socket(): SocketIOClient.Socket; /** * Returns current transport name, using socket.io internals * @returns transport name, e.g. "websocket" * @internal intended for tests only */ get transportName(): string; /** * Returns first present packet index in last emit history * @returns first history index * @internal intended for tests only */ get firstHistoryIndex(): number | undefined; /** * Returns whether socket connected * @returns is connected */ get connected(): boolean; /** * @inheritdoc * @remarks Socket events `ClientStickySockets.INTERNAL_EVENTS` cannot be subscribed to * @throws `ValidationError` if attempting to subscribe to an internal event */ on>(event: U, callback: ClientStickySocket.Events[U]): void; /** * Emits a data event. All events are buffered if no connection * @param event The event that we're emitting * @param args Optional arguments to send with the event */ send(event: string, ...args: any[]): void; /** * Disconnects socket * @param err error if disconnecting with error * @returns promise resolving when disconnected */ disconnect(err?: Error): Promise; /** * Destroys underlying socket, using socket.io internals. The socket must have `websocket` transport * @param err optional error * @internal intended for tests only, e.g. to test connection loss */ destroyInternalSocket(err?: Error): void; /** * Removes expired emit history * @internal intended for tests only */ removeExpiredEmitHistory(): void; } declare namespace ClientStickySocket { /** Constructing options */ type Options = Pick & { /** * Emit history buffer TTL. Defaults to `stickyConnectionTtlInSeconds` + `reconnectThrottleDelayInMs` * (converted to seconds) */ emitHistoryTtlInSeconds?: number; /** Timeout within of which a connection can be restored as previous one. Defaults to `10` */ stickyConnectionTtlInSeconds?: number; /** Reconnection delay. The delay will be increased by 2x each failed connection attempt. Defaults to `1000` */ reconnectionDelayInMs?: number; /** Max reconnection delay. Defaults to `10000` */ reconnectionDelayMaxInMs?: number; /** Reconnection delay randomization factor in range [0; 1]. Defaults to `0.5` */ reconnectionRandomizationFactor?: number; }; /** Event listeners */ type Events = { /** Fired only once upon first connection */ connect: () => void; /** Fired only once upon the last disconnection. Will be fired anyway, even if was never connected */ disconnect: (err?: Error) => void; /** Custom subscription events */ [event: string]: (...args: any[]) => any; }; /** Connection events */ const CONNECTION_EVENTS: string[]; /** Internal events */ const INTERNAL_EVENTS: string[]; } export default ClientStickySocket;