zego-express-engine-webrtc
Version:
zego webrtc express sdk
262 lines (261 loc) • 12.3 kB
TypeScript
import { ZegoInnerEvent, ZegoError, ZegoGeoFenceType, ZegoProxyInfo, ZegoLocalProxyConfig } from './zego.entity';
import { LogConfig } from '../../src/common/zego.entity';
import { ZegoRTMEvent, ZegoRoomConfig, ZegoUser, ZegoInitOptions, ZegoSwitchRoomConfig, ZegoRoomSendTransparentMessage } from '../../code/zh/ZegoExpressEntity.rtm';
import { StateCenter } from './stateCenter';
import { LiveRoomModules } from './modules';
import { CloudSetting } from './cloudSetting';
import { ZReporter } from './zego.reporter';
import { ProxyController } from './cloudProxy/CloudProxyController';
import { LocalProxyController } from './cloudProxy/LocalProxyController';
import { ZegoConnectionAgent } from '../plugin/zegoConnection';
import { ZegoLogger, ZegoDataReport } from 'zego-express-logger';
export declare class ZegoExpressWebRTM {
private _zgp_logger;
private _dataReport;
private _zgp_reporter;
private _zgp_options?;
static customDomain: {};
static proxyCtrl: ProxyController | LocalProxyController | null;
private _zgp_stateCenter;
liveRoomHandler: any;
get logger(): ZegoLogger;
get stateCenter(): StateCenter;
module: LiveRoomModules;
getReportSeq: Function;
proxyRes: (dataReport: ZegoDataReport, reportSeq: number, resolve: any, reject: any) => any;
getServerError: (code: number) => ZegoError;
getSeq: Function;
actionSuccessCallback: (fName: string, callbackList: {
[index: string]: Function;
}) => Function;
actionErrorCallback: (fName: string, callbackList: {
[index: string]: Function;
}) => Function;
unregisterCallback: (fName: string, callbackList: {
[index: string]: Function;
}) => void;
netAgent: ZegoConnectionAgent;
dispatchServers: string[];
dispatchHttp3Servers: string[];
dispatchWssV6Servers: string[];
dispatchHttp3V6Servers: string[];
cloudSettingTimer?: any;
_zgp_timeOffsetUpdateTimer?: any;
private _zgp_NetworkOnlineDetectTimer;
private _zgp_NetworkOnlineDetectIntervalMs;
static geoFenceType: ZegoGeoFenceType;
static geoFenceAreaList: number[];
static engineOptions: any;
cloudSetting?: CloudSetting;
get modules(): {
service: any;
};
get isUseNetAgent(): boolean;
get isUaConnect(): boolean;
private _zgp_getSetting;
private _zgp_setSetting;
version: any;
/** tabs id */
static pageID: string;
id: string;
get reporter(): ZReporter;
constructor(appID: number, server: string | string[], _zgp_logger: ZegoLogger, _dataReport: ZegoDataReport, _zgp_reporter: ZReporter, ENV: number, _zgp_options?: ZegoInitOptions | undefined);
private _zgp_setLogBySetting;
setEngineConfig(config: any): void;
destroyRTM(): void;
private _zgp_initCallback;
/**
* 取 sdk 版本号的前三位 A.B.C 作转换处理 A<<20|B<<8|C
* 自 2.25.0 起,取产品号及 sdk 版本号的前三位 A.B.C 作转换处理 productType<<28|A<<20|B<<8|C,所有数字版本号统一
* @param sdkVersion sdk 版本号
*/
private _zgp_getSDKVersionNum;
private _zgp_initSpans;
private _zgp_handleZipLogUrl;
getStoreAppConfig(): void;
private _zgp_createNetAgent;
private _zgp_getMainDomain;
private _zgp_getConfigDomains;
private _replaceMainDomain;
private hashMainDomain;
/**
* SDK hardcode 3个域名,根据 app hash 获取对应域名,
* 同时另外两个域名作为备用域名
* @returns
*/
private _zgp_getHardcodeDomains;
private _zgp_getDispatchUrl;
private _zgp_getServerDomains;
private _zgp_makeupAccesshubServer;
private getUnloadEventName;
private _bindWindowListener;
private _zgp_unbindWindowListener;
_zgp_eventHandler: {
online: () => void;
offline: () => void;
unload: (e: Event) => Promise<void>;
};
retryRoom(retryNow?: boolean, roomID?: string, needResetSession?: boolean): void;
private _zgp_netOnLineHandle;
private _zgp_StopNetworkOnlineDetection;
private _zgp_StartNetworkOnlineDetection;
private _zgp_netOffLineHandle;
setLogConfig(option: LogConfig): boolean;
setDebugVerbose(enable: boolean): void;
private _zgp_setDebug;
renewToken(token: string, roomID?: string): boolean;
protected setCloudSettingURLs(urls: string[]): void;
private _roomLoginResponseListener;
loginRoom(roomID: string, token: string, user: ZegoUser, config?: ZegoRoomConfig): Promise<boolean>;
/**
* @description 客户可能参数不传,所以内部方法要将参数设置为可选的,逻辑上再做参数校验
* @param {string} [fromRoomID] 必填
* @param {string} [toRoomID] 必填
* @param {ZegoSwitchRoomConfig} [config] 必填Token
* @returns {*} {Promise<boolean>}
*/
switchRoom(fromRoomID?: string, toRoomID?: string, config?: ZegoSwitchRoomConfig): Promise<boolean>;
handleLogUpload(): void;
fetchAppConfigByTargetToken(token: string, userID: string): Promise<any>;
fetchAppConfig(token?: string): Promise<void>;
_zgp_checkIfNeedOpenWsLog(action: string): void;
private _zgp_getCloudSetting;
private _zgp_cloudReportNotify;
private _zgp_loginReport;
logoutRoom(roomID?: string, isSwitchRoom?: boolean, isUnload?: boolean): void;
uploadLog(callByUSer?: boolean): Promise<{
errorCode: number;
extendedData: string;
}>;
sendCustomCommand(roomID: string, command: string | Record<string, any>, toUserList: string[]): Promise<{
errorCode: number;
extendedData: string;
}>;
_sendCustomCommand(roomID: string, command: string | Record<string, any>, toUserList: string[]): Promise<{
seq: number;
errorCode: number;
extendedData: string;
}>;
sendRoomChannelMessage(roomID: string, channelType: number, msgType: number, msgContent: string, toUserIDList: string[]): Promise<{
errorCode: number;
extendedData: string;
}>;
sendTransparentMessage(roomID: string, message: ZegoRoomSendTransparentMessage): Promise<{
errorCode: number;
extendedData: string;
}>;
sendBroadcastMessage(roomID: string, message: string): Promise<{
errorCode: number;
messageID: number;
extendedData: string;
}>;
_sendBroadcastMessage(roomID: string, message: string, category?: 1 | 2, type?: 1 | 2 | 3): Promise<{
seq: number;
errorCode: number;
messageID: number;
extendedData: string;
}>;
setRoomExtraInfo(roomID: string, type: string, data: string): Promise<{
errorCode: number;
}>;
_setRoomExtraInfo(roomID: string, type: string, data: string): Promise<{
seq: number;
errorCode: number;
}>;
sendBarrageMessage(roomID: string, message: string): Promise<{
errorCode: number;
messageID: string;
extendedData: string;
}>;
_sendBarrageMessage(roomID: string, message: string, category?: 1 | 2, type?: 1 | 2 | 3): Promise<{
seq: number;
errorCode: number;
messageID: string;
extendedData: string;
}>;
sendRelayMessage(type: string, data: string, success: (seq: number) => void, error: (err: ZegoError, seq: number) => void, roomID?: string): void;
requestJoinLive(destIdName: string, success: (seq: number) => void, error: (err: ZegoError, seq: number) => void, resultCallback: (result: boolean, fromUserId: string, fromUserName: string) => void, roomID?: string): boolean;
inviteJoinLive(destIdName: string, success: (seq: number) => void, error: (err: ZegoError, seq: number) => void, resultCallback: (result: boolean, fromUserId: string, fromUserName: string) => void, roomID?: string): boolean;
endJoinLive(destIdName: string, success: (seq: number) => void, error: (err: ZegoError, seq: number) => void, roomID?: string): boolean;
respondJoinLive(requestId: string, respondResult: boolean, success?: (seq: number) => void, error?: (err: ZegoError, seq: number) => void, roomID?: string): boolean;
getVersion(): string;
setSdkBizVersion(bizVersion: string): void;
on<K extends keyof ZegoRTMEvent>(event: K, callBack: ZegoRTMEvent[K]): boolean;
off<K extends keyof ZegoRTMEvent>(event: K, callBack?: ZegoRTMEvent[K]): boolean;
_on<K extends keyof ZegoInnerEvent>(event: K, callBack: ZegoInnerEvent[K]): boolean;
_off<K extends keyof ZegoInnerEvent>(event: K, callBack?: ZegoInnerEvent[K]): boolean;
isTestEnvironment(): boolean;
isLogin(roomID?: string): boolean;
getMultiRoom(): boolean;
getAppID(): number;
getUserID(): string;
getUserName(): string;
getToken(roomID?: string): string;
setRoomCreateFlag(flag: number): void;
setRole(role: 1 | 2): void;
getSessionId(roomID?: string): string;
getRoomSessionID(roomID?: string): string;
getAppConfig(): any;
setTestPackageSize(test: boolean): void;
setAccess(isAccess: boolean): void;
enableMultiRoom(isMulti: boolean): boolean;
getRoomModules(roomID: string): LiveRoomModules | undefined;
private _onAppConfigUpdate;
private _onBeforePageUnload;
static use(module: any): void;
static setGeoFence(geoFenceType: ZegoGeoFenceType, geoFenceAreaList: number[]): void;
static setEngineOptions(options: {
geoFenceType?: number;
geoFenceAreaList?: number[];
customDomain?: {
accesshub?: string;
logreport?: string;
detaillog?: string;
};
dataReportCustomerContext?: number;
ipStackMode?: number;
framework?: string;
}): void;
static logConfigForPreset: LogConfig | undefined;
static presetLogConfig(option: LogConfig): boolean;
resetRoomTokenTimer(roomID: string, remainTime?: number): void;
isDisConnect(): boolean;
sendMessage(cmd: string, body: any, suc: Function, err: Function): void;
getNetworkInfo(): {
timestamp: number;
maxDeviation: number;
};
setProtoFormat(format?: string): void;
setSdkLoginRelateService(relateService: Array<string>): void;
getRoomID(): string;
getServerTimeOffset(): number;
getReqHead(roomID?: string): any;
sendSwitchMessage(cmd: string, body: Uint8Array): number;
onSwitchMessage(callback: (header: any, body: Uint8Array) => {}): any;
onAppConfigUpdate(callback: (appConfig: any) => void): void;
onBeforePageUnload(callback: () => void): void;
getProtoVer(): number;
sendBusinessMessage(cmd: number, body: Uint8Array, params?: {
roomID?: string;
}): number;
private _zgp_logoutSpan;
getMsgSpan(spanName: string, roomID: string, isMap?: boolean): any;
private _zgp_updateTimeOffsetInterval;
setNetAgentHBMode(mode: 'periodic' | 'lazy'): void;
setLocalGeoFencing(): void;
getLocalGeoFencing(): any;
/**
* 开启地理围栏
* 1、sdk 本地 hardcode 数据
* 2、根据传入配置选择符合的地理围栏 id
* 3、首次本地无缓存,直接在符合的地理围栏里选取一个作为当前使用的地理围栏id
* 4、连接上之后 getConfig 获取地理围栏 id,同时发起调度服务端根据 sdk 配置和服务端配置选取真正使用的地理围栏 id,返回 accesshub,隔离域名则不调度
* 5、非首次连接则判断缓存的地理围栏 id 是否在传入的地理围栏 id 列表中,若在,则使用缓存的 accesshub 和缓存 id 对应的 log,同时把 id 对应的 accesshub 作为备用域名;若不在,则和首次一样
* 6、设置了域名隔离则将前面选取的 accesshub 和 log 替换隔离主域名
*/
private getGeoDomains;
private _getGeoFencingIDAndDomain;
static setCloudProxyConfig(proxyList: ZegoProxyInfo[], token: string, enable: boolean): void;
static setLocalProxyConfig(proxyConfig: ZegoLocalProxyConfig, enable: boolean): void;
private setAPIReports;
}