node-datachannel
Version:
WebRTC For Node.js and Electron. libdatachannel node bindings.
119 lines (117 loc) • 4.38 kB
TypeScript
interface Channel {
close(): void;
sendMessage(msg: string): boolean;
sendMessageBinary(buffer: Uint8Array): boolean;
isOpen(): boolean;
bufferedAmount(): number;
maxMessageSize(): number;
setBufferedAmountLowThreshold(newSize: number): void;
onOpen(cb: () => void): void;
onClosed(cb: () => void): void;
onError(cb: (err: string) => void): void;
onBufferedAmountLow(cb: () => void): void;
onMessage(cb: (msg: string | Buffer | ArrayBuffer) => void): void;
}
interface WebSocketServerConfiguration {
port?: number;
enableTls?: boolean;
certificatePemFile?: string;
keyPemFile?: string;
keyPemPass?: string;
bindAddress?: string;
connectionTimeout?: number;
maxMessageSize?: number;
}
type LogLevel = 'Verbose' | 'Debug' | 'Info' | 'Warning' | 'Error' | 'Fatal';
interface SctpSettings {
recvBufferSize?: number;
sendBufferSize?: number;
maxChunksOnQueue?: number;
initialCongestionWindow?: number;
congestionControlModule?: number;
delayedSackTime?: number;
}
type ProxyServerType = 'Socks5' | 'Http';
interface ProxyServer {
type: ProxyServerType;
ip: string;
port: number;
username?: string;
password?: string;
}
type RelayType = 'TurnUdp' | 'TurnTcp' | 'TurnTls';
interface IceServer {
hostname: string;
port: number;
username?: string;
password?: string;
relayType?: RelayType;
}
type TransportPolicy = 'all' | 'relay';
interface RtcConfig {
iceServers: (string | IceServer)[];
proxyServer?: ProxyServer;
bindAddress?: string;
enableIceTcp?: boolean;
enableIceUdpMux?: boolean;
disableAutoNegotiation?: boolean;
forceMediaTransport?: boolean;
portRangeBegin?: number;
portRangeEnd?: number;
maxMessageSize?: number;
mtu?: number;
iceTransportPolicy?: TransportPolicy;
disableFingerprintVerification?: boolean;
disableAutoGathering?: boolean;
certificatePemFile?: string;
keyPemFile?: string;
keyPemPass?: string;
}
type DescriptionType = 'unspec' | 'offer' | 'answer' | 'pranswer' | 'rollback';
type RTCSdpType = 'answer' | 'offer' | 'pranswer' | 'rollback';
type RTCIceTransportState = 'checking' | 'closed' | 'completed' | 'connected' | 'disconnected' | 'failed' | 'new';
type RTCPeerConnectionState = 'closed' | 'connected' | 'connecting' | 'disconnected' | 'failed' | 'new';
type RTCIceConnectionState = 'checking' | 'closed' | 'completed' | 'connected' | 'disconnected' | 'failed' | 'new';
type RTCIceGathererState = 'complete' | 'gathering' | 'new';
type RTCIceGatheringState = 'complete' | 'gathering' | 'new';
type RTCSignalingState = 'closed' | 'have-local-offer' | 'have-local-pranswer' | 'have-remote-offer' | 'have-remote-pranswer' | 'stable';
interface LocalDescriptionInit {
iceUfrag?: string;
icePwd?: string;
}
interface DataChannelInitConfig {
protocol?: string;
negotiated?: boolean;
id?: number;
unordered?: boolean;
maxPacketLifeTime?: number;
maxRetransmits?: number;
}
interface CertificateFingerprint {
/**
* @see https://developer.mozilla.org/en-US/docs/Web/API/RTCCertificate/getFingerprints#value
*/
value: string;
/**
* @see https://developer.mozilla.org/en-US/docs/Web/API/RTCCertificate/getFingerprints#algorithm
*/
algorithm: 'sha-1' | 'sha-224' | 'sha-256' | 'sha-384' | 'sha-512' | 'md5' | 'md2';
}
interface SelectedCandidateInfo {
address: string;
port: number;
type: string;
transportType: string;
candidate: string;
mid: string;
priority: number;
}
type Direction = 'SendOnly' | 'RecvOnly' | 'SendRecv' | 'Inactive' | 'Unknown';
interface IceUdpMuxRequest {
ufrag: string;
host: string;
port: number;
}
type NalUnitSeparator = 'Length' | 'ShortStartSequence' | 'LongStartSequence' | 'StartSequence';
type ObuPacketization = 'Obu' | 'TemporalUnit';
export type { CertificateFingerprint, Channel, DataChannelInitConfig, DescriptionType, Direction, IceServer, IceUdpMuxRequest, LocalDescriptionInit, LogLevel, NalUnitSeparator, ObuPacketization, ProxyServer, ProxyServerType, RTCIceConnectionState, RTCIceGathererState, RTCIceGatheringState, RTCIceTransportState, RTCPeerConnectionState, RTCSdpType, RTCSignalingState, RelayType, RtcConfig, SctpSettings, SelectedCandidateInfo, TransportPolicy, WebSocketServerConfiguration };