/// import { EventEmitter } from "events"; import { Emitter } from "../../api/emitter"; import { Transport as TransportDefinition } from "../../api/transport"; import { TransportState } from "../../api/transport-state"; import { Logger } from "../../core"; /** * Transport options. * @public */ export interface TransportOptions { /** * URL of WebSocket server to connect with. For example, "wss://localhost:8080". */ server: string; /** * Seconds to wait for WebSocket to connect before giving up. * @defaultValue `5` */ connectionTimeout?: number; /** * Keep alive - needs review. * @internal */ keepAliveInterval?: number; /** * Keep alive - needs review. * @internal */ keepAliveDebounce?: number; /** * If true, messsages sent and received by the transport are logged. * @defaultValue `true` */ traceSip?: boolean; } /** * Transport for SIP over secure WebSocket (WSS). * @public */ export declare class Transport extends EventEmitter implements TransportDefinition { private static defaultOptions; onConnect: (() => void) | undefined; onDisconnect: ((error?: Error) => void) | undefined; onMessage: ((message: string) => void) | undefined; private _protocol; private _state; private _stateEventEmitter; private _ws; private configuration; private connectPromise; private connectResolve; private connectReject; private connectTimeout; private disconnectPromise; private disconnectResolve; private disconnectReject; private keepAliveInterval; private keepAliveDebounceTimeout; private logger; private transitioningState; constructor(logger: Logger, options?: TransportOptions); dispose(): Promise; /** * The protocol. * * @remarks * Formatted as defined for the Via header sent-protocol transport. * https://tools.ietf.org/html/rfc3261#section-20.42 */ readonly protocol: string; /** * The URL of the WebSocket Server. */ readonly server: string; /** * Transport state. */ readonly state: TransportState; /** * Transport state change emitter. */ readonly stateChange: Emitter; /** * The WebSocket. */ readonly ws: WebSocket | undefined; /** * Connect to network. * Resolves once connected. Otherwise rejects with an Error. */ connect(): Promise; /** * Disconnect from network. * Resolves once disconnected. Otherwise rejects with an Error. */ disconnect(): Promise; /** * Returns true if the `state` equals "Connected". * @remarks * This is equivalent to `state === TransportState.Connected`. */ isConnected(): boolean; /** * Sends a message. * Resolves once message is sent. Otherwise rejects with an Error. * @param message - Message to send. */ send(message: string): Promise; /** * Add listener for connection events. * @deprecated Use `onConnected`, `onDisconnected` and/or `stateChange`. */ on(event: "connected" | "connecting" | "disconnecting" | "disconnected", listener: () => void): this; /** * Add listener for message event. * @deprecated Use `onMessage`. */ on(event: "message", listener: (message: string) => void): this; private _connect; private _disconnect; private _send; /** * WebSocket "onclose" event handler. * @param ev - Event. */ private onWebSocketClose; /** * WebSocket "onerror" event handler. * @param ev - Event. */ private onWebSocketError; /** * WebSocket "onmessage" event handler. * @param ev - Event. */ private onWebSocketMessage; /** * WebSocket "onopen" event handler. * @param ev - Event. */ private onWebSocketOpen; /** * Helper function to generate an Error. * @param state State transitioning to. */ private transitionLoopDetectedError; /** * Transition transport state. * @internal */ private transitionState; private clearKeepAliveTimeout; /** * Send a keep-alive (a double-CRLF sequence). */ private sendKeepAlive; /** * Start sending keep-alives. */ private startSendingKeepAlives; /** * Stop sending keep-alives. */ private stopSendingKeepAlives; } //# sourceMappingURL=transport.d.ts.map