UNPKG

solver-sdk

Version:

SDK для интеграции с Code Solver Backend API

119 lines 5.81 kB
import { WebSocketClient, WebSocketClientOptions } from '../utils/websocket-client.js'; import { WebSocketNamespace } from '../constants/websocket-namespaces.constants.js'; import { Logger, LogFunction } from '../utils/logger.js'; import { SessionManager } from '../utils/session-manager.js'; import { PingPongManager } from '../utils/ping-pong-manager.js'; import { ConnectionStateManager } from '../utils/connection-state-manager.js'; /** * Опции базового WebSocket клиента */ export interface BaseWebSocketClientOptions extends Omit<WebSocketClientOptions, 'logger'> { /** Логгер (объект или функция) */ logger?: Logger | LogFunction; /** API ключ для аутентификации */ apiKey?: string; /** Включить автоматическое ping/pong */ enableAutoPing?: boolean; /** Интервал ping в миллисекундах */ pingInterval?: number; /** Таймаут ожидания pong в миллисекундах */ pingTimeoutThreshold?: number; /** Включить сохранение сессий */ enableSessionPersistence?: boolean; /** Стратегия переподключения */ reconnectStrategy?: 'linear' | 'exponential' | 'fibonacci'; /** Задержка перед повторной попыткой подключения в миллисекундах */ retryDelay?: number; /** Максимальная задержка перед повторной попыткой подключения в миллисекундах */ maxRetryDelay?: number; } /** * Базовый абстрактный класс для всех WebSocket клиентов */ export declare abstract class BaseWebSocketClient { /** Базовый URL API */ protected readonly baseURL: string; /** Опции клиента */ protected readonly options: BaseWebSocketClientOptions; /** Пространство имен WebSocket */ protected readonly namespace: WebSocketNamespace; /** WebSocket клиент */ protected client: WebSocketClient | null; /** Логгер */ protected readonly logger: Logger; /** Менеджер сессий */ protected readonly sessionManager: SessionManager; /** Менеджер ping/pong */ protected readonly pingPongManager: PingPongManager; /** Менеджер состояния подключения */ protected readonly connectionStateManager: ConnectionStateManager; /** * Создает новый базовый WebSocket клиент * @param {WebSocketNamespace} namespace Пространство имен WebSocket * @param {string} baseURL Базовый URL API * @param {BaseWebSocketClientOptions} options Опции клиента */ constructor(namespace: WebSocketNamespace, baseURL: string, options?: BaseWebSocketClientOptions); /** * Подключается к серверу WebSocket * @param {Record<string, any>} [params={}] Дополнительные параметры для подключения * @returns {Promise<boolean>} Успешность подключения */ connect(params?: Record<string, any>): Promise<boolean>; /** * Формирует URL для подключения * @param {Record<string, any>} params Параметры для подключения * @returns {string} URL для подключения */ protected buildConnectionUrl(params: Record<string, any>): string; /** * Устанавливает обработчики событий для WebSocket клиента */ protected setupEventHandlers(): void; /** * Отправляет аутентификационные данные на сервер */ protected authenticate(): void; /** * Отключается от сервера WebSocket */ disconnect(): void; /** * Проверяет, подключен ли клиент к серверу * @returns {boolean} true, если клиент подключен */ isConnected(): boolean; /** * Получает ID сокета * @returns {string | null} ID сокета или null, если не подключен */ getSocketId(): string | null; /** * Отправляет событие на сервер * @param {string} eventType Тип события * @param {any} [data] Данные события * @returns {boolean} Успешность отправки */ send(eventType: string, data?: any): boolean; /** * Отправляет событие и ожидает ответа * @param {string} eventType Тип события * @param {any} data Данные события * @param {number} [timeout=5000] Таймаут ожидания ответа в миллисекундах * @returns {Promise<any>} Ответ сервера */ emitWithAck(eventType: string, data: any, timeout?: number): Promise<any>; /** * Добавляет обработчик события * @param {string} eventType Тип события * @param {(data: any) => void} handler Обработчик события */ on(eventType: string, handler: (data: any) => void): void; /** * Удаляет обработчик события * @param {string} eventType Тип события * @param {(data: any) => void} [handler] Обработчик события (если не указан, удаляются все обработчики) */ off(eventType: string, handler?: (data: any) => void): void; } //# sourceMappingURL=base-ws-client.d.ts.map