UNPKG

testplane

Version:

Tests framework based on mocha and wdio

84 lines (83 loc) 3.68 kB
/// <reference types="node" /> import { IncomingMessage } from "node:http"; import { type RawData } from "ws"; import { WsConnectionTerminatedError, WsError, WsConnectionEstablishmentError, WsConnectionBreakError, WsConnectionTimeoutError, WsRequestTimeoutError } from "./error"; interface WsConnectionRetries { count: number; baseDelay: number; factor?: number; } interface WsConnectionTimeouts { createSession: number; request: number; } interface WsConnectionErrors { ConnectionEstablishment: new (...args: ConstructorParameters<typeof WsConnectionEstablishmentError>) => WsConnectionEstablishmentError; ConnectionTerminated: new (...args: ConstructorParameters<typeof WsConnectionTerminatedError>) => WsConnectionTerminatedError; ConnectionBreak: new (...args: ConstructorParameters<typeof WsConnectionBreakError>) => WsConnectionBreakError; ConnectionTimeout: new (...args: ConstructorParameters<typeof WsConnectionTimeoutError>) => WsConnectionTimeoutError; RequestTimeout: new (...args: ConstructorParameters<typeof WsRequestTimeoutError>) => WsRequestTimeoutError; } interface WsConnectionOptions { headers?: Record<string, string>; debugFn?: (formatter: any, ...args: any[]) => void; retries?: WsConnectionRetries; timeouts: WsConnectionTimeouts; errors: WsConnectionErrors; onMessage: (data: RawData, isBinary: boolean) => void | Promise<void>; } export declare class WsConnection<ResponseMessageType = unknown, RequestMessageType extends string | RawData = string | RawData> { private readonly _endpoint; private readonly _requestHeaders?; private readonly _debugFn; private readonly _retries; private readonly _timeouts; private readonly _errors; private readonly _onMessage; private readonly _onResponseHeaders?; private readonly _onReconnect?; private readonly _onDisconnect?; private readonly _onClose?; private _onPong; private _pingShouldSkip; private _pingInterval; private _pingSubsequentFails; private _onConnectionCloseFn; private _wsConnectionStatus; private _wsConnection; private _wsConnectionPromise; private _requestId; private _pendingRequests; constructor(endpoint: string, options: WsConnectionOptions); getConnectionProperties(): Promise<{ responseHeaders?: IncomingMessage["headers"]; }>; private _responseHeaders?; /** @description Tries to establish ws connection with timeout */ private _tryToEstablishWsConnection; /** * @description creates ws connection with retries or returns existing one * @note Concurrent requests with same params produce same ws connection */ private _getWsConnection; /** @description Produces connection-"uniq" request ids */ getRequestId(): number; /** @description Performs WS request with timeout */ makeRequest(requestId: number, requestMessage: RequestMessageType): Promise<ResponseMessageType | WsError>; provideResponseFor(requestId: number, data: ResponseMessageType | WsError): void; forceReconnect(sessionAbortMessage: string): void; /** @description Used to abort all pending requests when connection is closed */ private _abortPendingRequests; private _closeWsConnection; /** * @description Tries to re-establish connection after network drops * @note Silently gives up after failed retries attempts */ private _tryToReconnect; /** @description Closes websocket connection, terminating all pending requests */ close(): void; private _pingHealthCheckStop; private _isWebSocketActive; private _pingHealthCheckStart; } export {};