@skyway-sdk/analytics-client
Version:
The official Next Generation JavaScript SDK for SkyWay
84 lines • 4.3 kB
TypeScript
import { OnLogForAnalyticsProps } from '@skyway-sdk/common';
import { ContentType } from '@skyway-sdk/model';
import { BindingRtcPeerConnectionToSubscriptionClientEvent, JoinReportClientEvent, MediaDeviceReportClientEvent, PublicationUpdateEncodingsReportClientEvent, RtcPeerConnectionEventReportClientEvent, SubscriptionStatsReportClientEvent, SubscriptionUpdatePreferredEncodingReportClientEvent } from './clientEvent';
import { ConnectionFailedEventPayload } from './payloadTypes';
import { ConnectionState } from './socket';
import { Event } from './utils/event';
import { Logger } from './utils/logger';
declare type AnalyticsClientParams = {
token: string;
sdkVersion: string;
contextId: string;
};
declare type AnalyticsClientOptions = {
analyticsLoggingServerDomain?: string;
secure?: boolean;
logger?: Logger;
};
declare type MediaDeviceReport = MediaDeviceReportClientEvent['payload'];
declare type BindingRtcPeerConnectionToSubscription = BindingRtcPeerConnectionToSubscriptionClientEvent['payload'];
declare type SubscriptionStatsReport = SubscriptionStatsReportClientEvent['payload'];
declare type RtcPeerConnectionEventReport = RtcPeerConnectionEventReportClientEvent['payload'];
declare type PublicationUpdateEncodingsReport = PublicationUpdateEncodingsReportClientEvent['payload'];
declare type SubscriptionUpdatePreferredEncodingReport = SubscriptionUpdatePreferredEncodingReportClientEvent['payload'];
declare type JoinReport = JoinReportClientEvent['payload'];
export declare class AnalyticsClient {
private readonly _options;
private readonly _logger;
private _socket;
readonly onConnectionStateChanged: Event<ConnectionState>;
readonly onConnectionFailed: Event<void>;
readonly onAnalyticsNotEnabledError: Event<ConnectionFailedEventPayload>;
private _token;
private _newToken;
private readonly _sdkVersion;
private readonly _contextId;
private _isClosed;
private _responseCallbacks;
private _acknowledgeCallbacks;
private _mediaDeviceVersion;
private _encodingsVersion;
private _preferredEncodingVersion;
private _previousSubscriptionStats;
private _statsRequest;
private _pendingSdkLogs;
private _sdkLogTimer;
private static readonly MAX_PENDING_SDK_LOGS;
constructor({ token, sdkVersion, contextId }: AnalyticsClientParams, options?: AnalyticsClientOptions);
get connectionState(): ConnectionState;
connect(): Promise<void>;
bufferOrSendSdkLog(log: OnLogForAnalyticsProps): void;
dispose(): void;
setNewSkyWayAuthToken(token: string): void;
cleanupOnUnpublished(publicationId: string): void;
cleanupOnUnsubscribed(subscriptionId: string): void;
private _disconnect;
sendMediaDeviceReport(report: Omit<MediaDeviceReport, 'mediaDeviceVersion'>): Promise<void>;
sendSdkLogReport(logs: OnLogForAnalyticsProps[]): Promise<void>;
sendBindingRtcPeerConnectionToSubscription(bindingData: BindingRtcPeerConnectionToSubscription): Promise<void>;
/**
* RTCStatsReportにはcandidate-pair, local-candidate, remote-candidateが複数含まれる場合がある。
* 現在利用されているもののみを選出して返す。
*/
private filterStatsReport;
private bundleStatsReportByStatsType;
sendSubscriptionStatsReport(report: RTCStatsReport, subscriptionParams: Omit<SubscriptionStatsReport, 'stats'> & {
contentType: ContentType;
}): Promise<void>;
sendRtcPeerConnectionEventReport(report: RtcPeerConnectionEventReport): Promise<void>;
sendPublicationUpdateEncodingsReport(report: Omit<PublicationUpdateEncodingsReport, 'encodingsVersion'>): Promise<void>;
sendSubscriptionUpdatePreferredEncodingReport(report: Omit<SubscriptionUpdatePreferredEncodingReport, 'preferredEncodingVersion'>): Promise<void>;
sendJoinReport(report: JoinReport): Promise<void>;
private _sendClientEvent;
private _waitForAcknowledge;
private _reconnectWithNewSkyWayAuthToken;
private _eventReceivedHandler;
private _acknowledgeHandler;
private _setAcknowledgeCallback;
private _cleanupAnalyticsClientMaps;
getIntervalSec(): number;
isConnectionEstablished(): boolean;
isClosed(): boolean;
}
export {};
//# sourceMappingURL=analyticsClient.d.ts.map