sip.js
Version:
A SIP library for JavaScript
126 lines (125 loc) • 3.45 kB
TypeScript
import { Emitter } from "../../../api/emitter.js";
import { Transport as TransportDefinition } from "../../../api/transport.js";
import { TransportState } from "../../../api/transport-state.js";
import { Logger } from "../../../core/log/logger.js";
import { TransportOptions } from "./transport-options.js";
/**
* Transport for SIP over secure WebSocket (WSS).
* @public
*/
export declare class Transport 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<void>;
/**
* The protocol.
*
* @remarks
* Formatted as defined for the Via header sent-protocol transport.
* https://tools.ietf.org/html/rfc3261#section-20.42
*/
get protocol(): string;
/**
* The URL of the WebSocket Server.
*/
get server(): string;
/**
* Transport state.
*/
get state(): TransportState;
/**
* Transport state change emitter.
*/
get stateChange(): Emitter<TransportState>;
/**
* The WebSocket.
*/
get ws(): WebSocket | undefined;
/**
* Connect to network.
* Resolves once connected. Otherwise rejects with an Error.
*/
connect(): Promise<void>;
/**
* Disconnect from network.
* Resolves once disconnected. Otherwise rejects with an Error.
*/
disconnect(): Promise<void>;
/**
* 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<void>;
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;
}