@observertc/client-monitor-js
Version:
ObserveRTC Client Integration Javascript Library
115 lines (114 loc) • 5.79 kB
TypeScript
import { ClientSample } from './schema/ClientSample';
import EventEmitter from 'eventemitter3';
import { ClientEvent, ClientIssue, ClientMetaData, ClientMonitorEvents } from './ClientMonitorEvents';
import { PeerConnectionMonitor } from './monitors/PeerConnectionMonitor';
import { AppliedClientMonitorConfig, ClientMonitorConfig, ClientMonitorSourceType } from './ClientMonitorConfig';
import { PartialBy } from './utils/common';
import { Detectors } from './detectors/Detectors';
import { OutboundTrackMonitor } from './monitors/OutboundTrackMonitor';
import { InboundTrackMonitor } from './monitors/InboundTrackMonitor';
import { TrackMonitor } from './monitors/TrackMonitor';
import { ScoreCalculator } from "./scores/ScoreCalculator";
import { ClientEventPayloadProvider } from './sources/ClientEventPayloadProvider';
export declare class ClientMonitor extends EventEmitter<ClientMonitorEvents> {
static readonly samplingSchemaVersion = "3.0.0";
readonly mappedPeerConnections: Map<string, PeerConnectionMonitor>;
readonly detectors: Detectors;
readonly clientEventPayloadProvider: ClientEventPayloadProvider;
scoreCalculator: ScoreCalculator;
closed: boolean;
lastSampledAt: number;
lastCollectingStatsAt: number;
cpuPerformanceAlertOn: boolean;
sendingAudioBitrate: number;
sendingVideoBitrate: number;
receivingAudioBitrate: number;
receivingVideoBitrate: number;
totalAvailableIncomingBitrate: number;
totalAvailableOutgoingBitrate: number;
avgRttInSec: number;
score: number;
scoreReasons?: Record<string, number>;
private _browser?;
private readonly _sources;
private _timer?;
private _samplingTick;
private _collectingCounter;
private _clientEvents;
private _clientMetaItems;
private _clientIssues;
private _extensionStats;
durationOfCollectingStatsInMs: number;
readonly config: AppliedClientMonitorConfig;
attachments?: Record<string, unknown>;
constructor(config?: Partial<ClientMonitorConfig>);
get clientId(): string | undefined;
set clientId(clientId: string | undefined);
get callId(): string | undefined;
set callId(callId: string | undefined);
get appData(): Record<string, unknown> | undefined;
set appData(appData: Record<string, unknown> | undefined);
set browser(browser: {
name: 'chrome' | 'firefox' | 'safari' | 'edge' | 'opera' | 'unknown';
version: string;
} | undefined);
set onsamplecreated(listener: (...args: ClientMonitorEvents['sample-created']) => void);
set onstatscollected(listener: (...args: ClientMonitorEvents['stats-collected']) => void);
set onclientevent(listener: (...args: ClientMonitorEvents['client-event']) => void);
set onissue(listener: (...args: ClientMonitorEvents['issue']) => void);
get browser(): {
name: "chrome" | "firefox" | "safari" | "edge" | "opera" | "unknown";
version: string;
} | undefined;
close(): void;
on<K extends keyof ClientMonitorEvents>(event: K, listener: (...args: ClientMonitorEvents[K]) => void): this;
once<K extends keyof ClientMonitorEvents>(event: K, listener: (...args: ClientMonitorEvents[K]) => void): this;
off<K extends keyof ClientMonitorEvents>(event: K, listener: (...args: ClientMonitorEvents[K]) => void): this;
emit(event: keyof ClientMonitorEvents, ...args: ClientMonitorEvents[typeof event]): boolean;
collect(): Promise<[string, RTCStats[]][]>;
getPeerConnectionMonitor(peerConnectionId: string): PeerConnectionMonitor | undefined;
setScore<T extends Record<string, number>>(score: number, reasons?: T): void;
createSample(): ClientSample | undefined;
addPeerConnectionMonitor(peerConnectionMonitor: PeerConnectionMonitor): void;
addClientJoinEvent(event?: {
payload?: Record<string, unknown>;
timestamp?: number;
}): void;
addClientLeftEvent(event?: {
payload?: Record<string, unknown>;
timestamp?: number;
}): void;
addEvent<Payload = Record<string, unknown>>(event: PartialBy<ClientEvent, 'timestamp'> & {
payload?: Payload;
}): void;
addIssue(issue: PartialBy<ClientIssue, 'timestamp'>): void;
addMetaData(metaData: PartialBy<ClientMetaData, 'timestamp'>): void;
addExtensionStats(stats: {
type: string;
payload?: Record<string, unknown>;
}): void;
addSource(source: unknown, type?: ClientMonitorSourceType): void;
removeSource(source: unknown, type?: ClientMonitorSourceType): void;
fetchUserAgentData(): any;
watchNavigatorMediaDevices(): void;
get peerConnections(): PeerConnectionMonitor[];
get codecs(): import(".").CodecMonitor[];
get inboundRtps(): import(".").InboundRtpMonitor[];
get outboundRtps(): import(".").OutboundRtpMonitor[];
get remoteInboundRtps(): import(".").RemoteInboundRtpMonitor[];
get remoteOutboundRtps(): import(".").RemoteOutboundRtpMonitor[];
get mediaSources(): import(".").MediaSourceMonitor[];
get mediaPlayouts(): import(".").MediaPlayoutMonitor[];
get dataChannels(): import(".").DataChannelMonitor[];
get iceCandidatePairs(): import(".").IceCandidatePairMonitor[];
get iceCandidates(): import(".").IceCandidateMonitor[];
get iceTransports(): import(".").IceTransportMonitor[];
get certificates(): import(".").CertificateMonitor[];
get tracks(): TrackMonitor[];
getTrackMonitor(trackId: string): TrackMonitor | undefined;
getInboundTrackMonitor(trackId: string): InboundTrackMonitor | undefined;
getOutboundTrackMonitor(trackId: string): OutboundTrackMonitor | undefined;
setCollectingPeriod(collectingPeriodInMs: number): void;
setSamplingPeriod(samplingPeriodInMs: number): void;
private _setSamplingTick;
}