mediasoup
Version:
Cutting Edge WebRTC Video Conferencing
228 lines • 6.65 kB
TypeScript
import type { EnhancedEventEmitter } from './enhancedEvents';
import type { Transport, TransportListenInfo, TransportListenIp, TransportProtocol, TransportTuple, SctpState, BaseTransportDump, BaseTransportStats, TransportEvents, TransportObserverEvents } from './TransportTypes';
import type { WebRtcServer } from './WebRtcServerTypes';
import type { SctpParameters, NumSctpStreams } from './sctpParametersTypes';
import type { Either, AppData } from './types';
export type WebRtcTransportOptions<WebRtcTransportAppData extends AppData = AppData> = WebRtcTransportOptionsBase<WebRtcTransportAppData> & WebRtcTransportListen;
type WebRtcTransportOptionsBase<WebRtcTransportAppData> = {
/**
* Listen in UDP. Default true.
*/
enableUdp?: boolean;
/**
* Listen in TCP. Default true if webrtcServer is given, false otherwise.
*/
enableTcp?: boolean;
/**
* Prefer UDP. Default false.
*/
preferUdp?: boolean;
/**
* Prefer TCP. Default false.
*/
preferTcp?: boolean;
/**
* ICE consent timeout (in seconds). If 0 it is disabled. Default 30.
*/
iceConsentTimeout?: number;
/**
* Initial available outgoing bitrate (in bps). Default 600000.
*/
initialAvailableOutgoingBitrate?: number;
/**
* Create a SCTP association. Default false.
*/
enableSctp?: boolean;
/**
* SCTP streams number.
*/
numSctpStreams?: NumSctpStreams;
/**
* Maximum allowed size for SCTP messages sent by DataProducers.
* Default 262144.
*/
maxSctpMessageSize?: number;
/**
* Maximum SCTP send buffer used by DataConsumers.
* Default 262144.
*/
sctpSendBufferSize?: number;
/**
* Custom application data.
*/
appData?: WebRtcTransportAppData;
};
type WebRtcTransportListen = Either<Either<WebRtcTransportListenIndividualListenInfo, WebRtcTransportListenIndividualListenIp>, WebRtcTransportListenServer>;
type WebRtcTransportListenIndividualListenInfo = {
/**
* Listening info.
*/
listenInfos: TransportListenInfo[];
};
type WebRtcTransportListenIndividualListenIp = {
/**
* Listening IP address or addresses in order of preference (first one is the
* preferred one).
*/
listenIps: (TransportListenIp | string)[];
/**
* Fixed port to listen on instead of selecting automatically from Worker's port
* range.
*/
port?: number;
};
type WebRtcTransportListenServer = {
/**
* Instance of WebRtcServer.
*/
webRtcServer: WebRtcServer;
};
export type IceParameters = {
usernameFragment: string;
password: string;
iceLite?: boolean;
};
export type IceCandidate = {
foundation: string;
priority: number;
ip: string;
address: string;
protocol: TransportProtocol;
port: number;
type: IceCandidateType;
tcpType?: IceCandidateTcpType;
};
export type DtlsParameters = {
role?: DtlsRole;
fingerprints: DtlsFingerprint[];
};
/**
* The hash function algorithm (as defined in the "Hash function Textual Names"
* registry initially specified in RFC 4572 Section 8).
*/
export type FingerprintAlgorithm = 'sha-1' | 'sha-224' | 'sha-256' | 'sha-384' | 'sha-512';
/**
* The hash function algorithm and its corresponding certificate fingerprint
* value (in lowercase hex string as expressed utilizing the syntax of
* "fingerprint" in RFC 4572 Section 5).
*/
export type DtlsFingerprint = {
algorithm: FingerprintAlgorithm;
value: string;
};
export type IceRole = 'controlled' | 'controlling';
export type IceState = 'new' | 'connected' | 'completed' | 'disconnected' | 'closed';
export type IceCandidateType = 'host';
export type IceCandidateTcpType = 'passive';
export type DtlsRole = 'auto' | 'client' | 'server';
export type DtlsState = 'new' | 'connecting' | 'connected' | 'failed' | 'closed';
export type WebRtcTransportDump = BaseTransportDump & {
iceRole: 'controlled';
iceParameters: IceParameters;
iceCandidates: IceCandidate[];
iceState: IceState;
iceSelectedTuple?: TransportTuple;
dtlsParameters: DtlsParameters;
dtlsState: DtlsState;
dtlsRemoteCert?: string;
};
export type WebRtcTransportStat = BaseTransportStats & {
type: string;
iceRole: string;
iceState: IceState;
iceSelectedTuple?: TransportTuple;
dtlsState: DtlsState;
};
export type WebRtcTransportEvents = TransportEvents & {
icestatechange: [IceState];
iceselectedtuplechange: [TransportTuple];
dtlsstatechange: [DtlsState];
sctpstatechange: [SctpState];
};
export type WebRtcTransportObserver = EnhancedEventEmitter<WebRtcTransportObserverEvents>;
export type WebRtcTransportObserverEvents = TransportObserverEvents & {
icestatechange: [IceState];
iceselectedtuplechange: [TransportTuple];
dtlsstatechange: [DtlsState];
sctpstatechange: [SctpState];
};
export interface WebRtcTransport<WebRtcTransportAppData extends AppData = AppData> extends Transport<WebRtcTransportAppData, WebRtcTransportEvents, WebRtcTransportObserver> {
/**
* Transport type.
*
* @override
*/
get type(): 'webrtc';
/**
* Observer.
*
* @override
*/
get observer(): WebRtcTransportObserver;
/**
* ICE role.
*/
get iceRole(): 'controlled';
/**
* ICE parameters.
*/
get iceParameters(): IceParameters;
/**
* ICE candidates.
*/
get iceCandidates(): IceCandidate[];
/**
* ICE state.
*/
get iceState(): IceState;
/**
* ICE selected tuple.
*/
get iceSelectedTuple(): TransportTuple | undefined;
/**
* DTLS parameters.
*/
get dtlsParameters(): DtlsParameters;
/**
* DTLS state.
*/
get dtlsState(): DtlsState;
/**
* Remote certificate in PEM format.
*/
get dtlsRemoteCert(): string | undefined;
/**
* SCTP parameters.
*/
get sctpParameters(): SctpParameters | undefined;
/**
* SCTP state.
*/
get sctpState(): SctpState | undefined;
/**
* Dump WebRtcTransport.
*
* @override
*/
dump(): Promise<WebRtcTransportDump>;
/**
* Get WebRtcTransport stats.
*
* @override
*/
getStats(): Promise<WebRtcTransportStat[]>;
/**
* Provide the WebRtcTransport remote parameters.
*
* @override
*/
connect({ dtlsParameters, }: {
dtlsParameters: DtlsParameters;
}): Promise<void>;
/**
* Restart ICE.
*/
restartIce(): Promise<IceParameters>;
}
export {};
//# sourceMappingURL=WebRtcTransportTypes.d.ts.map