@observertc/client-monitor-js
Version:
ObserveRTC Client Integration Javascript Library
98 lines (97 loc) • 3.27 kB
TypeScript
import { IcePathKind } from "../monitors/IceCandidatePairMonitor";
import { PeerConnectionMonitor } from "../monitors/PeerConnectionMonitor";
import { Detector } from "./Detector";
export type IceDisconnectedIssuePayload = {
peerConnectionId: string;
transportId: string;
iceState?: string;
dtlsState?: string;
selectedCandidatePairId?: string;
disconnectedForMs: number;
iceGeneration: number;
durationInMs?: number;
};
export type IceConnectionFailedIssuePayload = {
peerConnectionId: string;
transportId: string;
dtlsState?: string;
selectedCandidatePairId?: string;
disconnectedForMs?: number;
iceGeneration: number;
durationInMs?: number;
};
export type IceTransportStalledIssuePayload = {
peerConnectionId: string;
transportId: string;
iceState?: string;
candidatePairState?: string;
selectedCandidatePairId?: string;
direction: 'inbound';
stalledForMs: number;
outboundBytesDelta?: number;
inboundBytesDelta?: number;
currentRoundTripTime?: number;
lastPacketReceivedTimestamp?: number;
iceGeneration: number;
durationInMs?: number;
};
export type UnstableIcePathIssuePayload = {
peerConnectionId: string;
pathKey: string;
transportId?: string;
switches: number;
windowInMs: number;
kind: IcePathKind;
durationInMs?: number;
};
export type IceRestartRecommendationReason = 'ice-failed' | 'ice-disconnected' | 'transport-stalled' | 'never-established';
export type IceRestartRecommendedEventPayload = {
peerConnectionId: string;
transportId?: string;
reason: IceRestartRecommendationReason;
conditionDurationInMs: number;
iceGeneration: number;
recommendationCount: number;
iceState?: string;
dtlsState?: string;
selectedCandidatePairId?: string;
};
export type IceRestartOutcome = 'detected' | 'recovered' | 'failed';
export type IceRestartClientEventPayload = {
peerConnectionId: string;
transportId: string;
iceGeneration: number;
outcome: IceRestartOutcome;
iceState?: string;
evidence: 'ice-username-fragment-changed';
timestamp: number;
};
export declare class IceConnectivityDetector implements Detector {
readonly peerConnection: PeerConnectionMonitor;
static readonly DISCONNECTED_ISSUE_TYPE = "ice-disconnected";
static readonly FAILED_ISSUE_TYPE = "ice-connection-failed";
static readonly STALLED_ISSUE_TYPE = "ice-transport-stalled";
static readonly UNSTABLE_PATH_ISSUE_TYPE = "unstable-ice-path";
readonly name = "ice-connectivity-detector";
disabled: boolean;
private readonly _states;
private readonly _unstablePaths;
private _establishmentRecommendedAt?;
private _establishmentRecommendations;
constructor(peerConnection: PeerConnectionMonitor);
private get config();
update(): void;
private _checkPathStability;
private _getState;
private _checkIceRestart;
private _usernameFragmentOf;
private _checkIceState;
private _checkInboundStall;
private _checkRestartRecommendation;
private _checkEstablishmentRecommendation;
private _recommendRestart;
private _notifyRestart;
private _resolveAll;
private _resolveIssue;
private _issueKey;
}