zego-express-engine-webrtc
Version:
zego webrtc express sdk
473 lines (472 loc) • 21.9 kB
TypeScript
import { ZegoServerResponse, ZegoUser, ZegoRoomConfig, ZegoRTMEvent, ZegoLogConfig, ZegoInitOptions, ZegoProxyInfo, ZegoSwitchRoomConfig, ZegoRoomSendTransparentMessage } from './ZegoExpressEntity.rtm';
import { ZegoExpressWebRTM } from '../../src/rtm';
import { ZegoGeoFenceType, ZegoLocalProxyConfig } from '../../src/rtm/zego.entity';
import { ZReporter } from '../../src/rtm/zego.reporter';
import { ZegoLogger, ZegoDataReport } from 'zego-express-logger';
export declare class ZegoExpressWebRTMEngine {
/**
* 是否开启多房间模式
*
* 支持版本:2.8.0 及以上。
*
* 详情描述:是否需要开启多房间,同一个用户可以同时加入多个房间,并同时在多个房间内推流、拉流、发送实时消息和接收消息回调。
*
* 业务场景:用于跨房间连麦和在线教育的超级小班场景。
*
* 默认值:默认不开启多房间。
*
* 调用时机:需要在初始化 SDK 后,第一次登录房间 loginRoom 前调用。
*
* 使用限制:一次完整的生命周期内只能调用一次。
*
* 相关接口:可调用 loginRoom 登录房间,调用 logoutRoom 退出房间,调用 startPublishingStream 开始推流。
*
* @param enable 是否开启,true 为开启,false 为关闭。
*/
enableMultiRoom(enable: boolean): boolean;
/**
* 登录房间
*
* Note: 支持版本:1.0.0 及以上。
*
* Note: 详情描述:登录房间,同房间用户共享流、消息、用户等信息变化。
*
* Note: 业务场景:通过登录房间来获取与其他用户进行音视频或消息互动的接口权限。
*
* Note: 调用时机:初始化且获取到 token 之后。
*
* Note: 注意事项:
* 1. token 是使用登录房间的钥匙,需要开发者自行实现,为保证安全,一定要在开发者自己的服务端生成 token,参考文章 [登录房间鉴权](https://doc-zh.zego.im/article/7646)。
* 2. 默认为单房间模式,同一个用户(即 userID 相同)不能同时登录两个及以上房间。
* 3. 若想监听房间内其他用户的变化,则 config 对象下的 “userUpdate” 参数必须设置为 “true”。
*
* Note: 隐私保护声明: 请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
*
* Note: 影响范围:大部分接口都需要在登录房间后才能调用。
*
* Note: 相关回调:房间状态回调 roomStateUpdate。
*
* Note: 相关接口:可调用 logoutRoom 接口退出房间。
*
* @param roomID 房间 ID,最大长度为 128 字节的字符串。仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '', '^', '&', '*', '(', ')', '_', '+', '=', '-', ', ';', '’', ',', '.', '<', '>', '/',
* @param token 登录验证 token,是通过在即构控制台注册项目获得密钥,加上指定算法获得。测试阶段可以通过 ZEGO 提供的接口获取,正式环境一定要用户自己实现。
* @param user 登录用户信息。
* @param config? 房间相关配置,可选。
*
* @return promise 异步返回登录结果,true 表示登录成功,false 表示登录失败。
*/
loginRoom(roomID: string, token: string, user: ZegoUser, config?: ZegoRoomConfig): Promise<boolean>;
/**
* 切换房间
*
* Note: 支持版本:3.7.0 及以上。
*
* Note: 详情描述:切换房间,快速的从当前房间切换到另外的房间。
*
* Note: 业务场景:便捷的实现不同房间之间的切换,比如从直播切换到1v1房间。
*
* Note: 调用时机:登录房间成功后。
*
* Note: 注意事项:
* 1. token 是登录 toRoomID 房间的钥匙,需要开发者自行实现,为保证安全,一定要在开发者自己的服务端生成 token,参考文章 [登录房间鉴权](https://doc-zh.zego.im/article/7646)。
*
* Note: 隐私保护声明: 请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
*
* Note: 影响范围:大部分接口都需要在登录房间后才能调用。
*
* Note: 相关回调:房间状态回调 roomStateUpdate。
*
* @param fromRoomID 当前已经登录过的房间 ID
* @param toRoomID 需要切换的房间 ID(必须是未登录的房间 ID)。
* @param config 房间相关配置,token 必填。
*
* @return promise 异步返回登录结果,true 表示登录成功,false 表示登录失败。
*/
switchRoom(fromRoomID: string, toRoomID: string, config: ZegoSwitchRoomConfig): Promise<boolean>;
/**
* 退出房间,不再接受各种房间内状态
*
* Note: 支持版本:1.0.0
*
* Note: 详情描述:退出房间,,结束同房间用户共享流、消息、用户等信息变化。
*
* Note: 业务场景:结束音视频通话或其他功能后需要调用该接口退出房间,以保证对端能及时同步本端当前状态。调用该接口后会向 ZEGO 服务器发送退出房间信令,然后重置当前房间中用户与 ZEGO 服务器进行交互所需的关键数据,并置空 websocket 对象。
*
* Note: 默认值:无
*
* Note: 调用时机:登录房间成功后。
*
* Note: 使用限制:无
*
* Note: 注意事项: 无
*
* Note: 影响范围:大部分接口都在退出房间后,不能再调用。
*
* Note: 相关回调:房间状态回调 roomStateUpdate。
*
* Note: 相关接口:可调用 loginRoom 接口登录号房间。
*
* Note: 平台差异:无
*
* @param roomID? 和登录房间的roomID保持一致,可选
*/
logoutRoom(roomID?: string): void;
/**
* 更新房间权限token
*
* 支持版本:2.6.0
*
* 详情描述:token权限变更,或者token过期时调用,更新token权限
*
* 业务场景:登录权限和推流权限隔离时使用, 利用token控制权限
*
* 默认值:无
*
* 调用时机:登录房间后,主动变更用户在房间内的权限; 登录房间后,收到token将要过期回调;
*
* 使用限制:无
*
* 注意事项:token是使用登录房间的钥匙, 这个是需要客户自己实现,为保证安全,一定要在自己的服务端生成token
*
* 影响范围:token内包含的过期时间,在过期前30s会触发tokenWillExpire回调
*
* 相关回调:房间token将要过期回调tokenWillExpire
*
* 相关接口:无
*
* Note: 平台差异:无
*
* @param token 指定算法生成的token, 即构提供生成token的不同语言版SDK;
* @param roomID 房间 ID,最大长度为 128 字节的字符串。仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '', '^', '&', '*', '(', ')', '_', '+', '=', '-', ', ';', '’', ',', '.', '<', '>', '/',
*
* @return true: 调用成功, false: 调用失败 (SDK 初步格式校验)
*/
renewToken(token: string, roomID?: string): boolean;
/**
* 发送房间弹幕消息(消息不保证可靠)
*
* Note: 支持版本:1.0.0 及以上。
*
* Note: 详情描述:向 roomID 对应的房间内所有用户发送弹幕消息,消息不保证可靠。
*
* Note: 业务场景:房间内用户发送弹幕消息互动。
*
* Note: 调用时机:调用接口 loginRoom 登录房间成功之后。
*
* Note: 使用限制:关于此接口的使用限制,请参考 https://doc-zh.zego.im/article/7584 或联系 ZEGO 技术支持。
*
* Note: 安全性提醒:请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
*
* Note: 相关回调:房间内用户可以通过房间弹幕消息通知回调 IMRecvBarrageMessage 来接收消息。
*
* @param roomID 房间 ID,最大长度为 128 字节的字符串。仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '', '^', '&', '*', '(', ')', '_', '+', '=', '-', ', ';', '’', ',', '.', '<', '>', '/'
* @param message 消息内容,长度不超过1024字节
*/
sendBarrageMessage(roomID: string, message: string): Promise<ZegoServerResponse>;
/**
* 发送房间广播消息(消息保证可靠)
*
* Note: 支持版本:1.0.0 及以上。
*
* Note: 详情描述:向 roomID 对应的房间内所有用户发送文本消息。
*
* Note: 业务场景:房间内用户发送消息聊天互动,例如语聊房。
*
* Note: 调用时机:调用接口 loginRoom 登录房间成功之后。
*
* Note: 使用限制:关于此接口的使用限制,请参考 https://doc-zh.zego.im/article/7584 或联系 ZEGO 技术支持。
*
* Note: 安全性提醒:请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
*
* Note: 影响范围:需要在登录房间后才能调用。
*
* Note: 相关回调:其他房间用户可以通过广播消息通知回调 IMRecvBroadcastMessage 来接收消息。
*
* @param roomID 房间 ID,最大长度为 128 字节的字符串。仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '', '^', '&', '*', '(', ')', '_', '+', '=', '-', ', ';', '’', ',', '.', '<', '>', '/'。
* @param message 消息内容,长度不超过1024 字节。
*/
sendBroadcastMessage(roomID: string, message: string): Promise<ZegoServerResponse>;
/**
* 发送自定义信令(消息可靠)
*
* Note: 支持版本:1.0.0 及以上。
*
* Note: 详情描述:向 roomID 对应的房间内指定用户发送自定义消息,消息保证可靠。
*
* Note: 业务场景:私聊个别用户。
*
* Note: 调用时机:登录房间成功之后。
*
* Note: 使用限制:关于此接口的使用限制,请参考 https://doc-zh.zego.im/article/7584 或联系 ZEGO 技术支持。
*
* Note: 安全性提醒:请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
*
* Note: 影响范围:大部分接口都需要在登录房间后才能调用。
*
* Note: 相关回调:房间内用户可以通过监听自定义命令信令回调 IMRecvCustomCommand 来接收消息。
*
* @param roomID 房间 ID,最大长度为 128 字节的字符串。仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '', '^', '&', '*', '(', ')', '_', '+', '=', '-', ', ';', '’', ',', '.', '<', '>', '/'。
* @param command 自定义消息内容,长度不超过 1024 字节。
* @param toUserIDList 目标用户uerId 数组。
*/
sendCustomCommand(roomID: string, command: string, toUserIDList: string[]): Promise<ZegoServerResponse>;
/**
* 设置房间附加消息
*
* Note: 支持版本:1.0.0
*
* Note: 详情描述:该功能可以设置一个以房间为单位的附加消息,该消息跟随整个房间的生命周期,每个登录到房间的用户都能够同步消息。
*
* Note: 业务场景:开发者可用于实现各种业务逻辑,如房间公告等等。
*
* Note: 默认值:无
*
* Note: 调用时机:登录房间成功之后。
*
* Note: 使用限制:关于此接口的使用限制,请参考 https://doc-zh.zego.im/article/7584 或 联系 ZEGO 技术支持。
*
* Note: 注意事项: 目前房间附加消息只允许设置一个键值对,且 key 最大长度为 10 字节,value 最大长度为 100 字节。
*
* Note: 安全性提醒: 请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
*
* Note: 影响范围:大部分接口都需要在登录房间后才能调用。
*
* Note: 相关回调:房间附加信息回调 roomExtraInfoUpdate。
*
* Note: 相关接口:无
*
* Note: 平台差异:无
*
* @param roomID 房间 ID,最大长度为 128 字节的字符串。仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '', '^', '&', '*', '(', ')', '_', '+', '=', '-', ', ';', '’', ',', '.', '<', '>', '/'
* @param key 附加消息键
* @param value 附加消息值
*/
setRoomExtraInfo(roomID: string, key: string, value: string): Promise<ZegoServerResponse>;
/**
* 发送透传消息
*
* Note: 支持版本:3.12.0 及以上。
*
* Note: 详情描述:向房间内发送透传消息。
*
* Note: 业务场景:一般用于远程控制信令或用户与用户之间的消息发送。
*
* Note: 调用时机:登录房间成功之后。
*
* Note: 使用限制:关于此接口的使用限制,请参考 https://doc-zh.zego.im/article/7584 或联系 ZEGO 技术支持。
*
* Note: 安全性提醒:请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
*
* Note: 相关回调:当发送的消息, mode 指定为 ZegoRoomTransparentMessageModeOnlyClient 或者 ZegoRoomTransparentMessageModeClientAndServer 可通过 [onRecvRoomTransparentMessage] 接收到发送消息的内容。
*
* @param roomID 房间 ID,最大长度为 128 字节的字符串。仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '', '^', '&', '*', '(', ')', '_', '+', '=', '-', ', ';', '’', ',', '.', '<', '>', '/'。
* @param command 自定义消息内容,长度不超过 1024 字节。
* @param toUserIDList 目标用户uerId 数组。
*/
sendTransparentMessage(roomID: string, message: ZegoRoomSendTransparentMessage): Promise<ZegoServerResponse>;
/**
* 日志高级配置
*
* Note: 支持版本:1.0.0
*
* Note: 详情描述:配置客户端打印日志级别和远端日志上传级别,日志是定位问题的重要手段。
*
* Note: 业务场景:在多数场景下,客户不用调用该接口,使用默认配置即可。
*
* Note: 默认值:本地日志和上传级别均为 info。
*
* Note: 调用时机:在初始化之后,其他任何接口之前调用。
*
* Note: 使用限制:无,但建议整个生命周期内只调用一次。
*
* Note: 注意事项:除非有明确的特殊需求,否则请勿调用该接口更改默认配置。
*
* Note: 相关回调:无
*
* Note: 相关接口:无
*
* @param config 日志相关高级配置
*
* @return 调用是否成功; 失败情况: 输入参数格式有误
*/
setLogConfig(config: ZegoLogConfig): boolean;
/**
* 预先设置日志等级等配置。
*
* 支持版本:3.7.0
*
* 详情描述:支持在初始化 SDK 实例之前预先设置日志等级等配置。
*
* Note: 默认值:本地日志和上传级别均为 info。
*
* 调用时机:创建引擎实例之前调用。
*
* @param config 日志配置
*
* @return 调用是否成功; 失败情况: 输入参数格式有误
*/
static presetLogConfig(config: ZegoLogConfig): boolean;
/**
* 错误日志信息 alert 提示,默认测试环境下都是开启状态
*
* Note: 支持版本:1.0.0
*
* Note: 详情描述:打开或关闭错误弹窗提示。
*
* Note: 业务场景:用于开发环节提示错误。
*
* Note: 默认值:测试环境默认值为 “true“, 可以手动关闭。
*
* Note: 调用时机:初始化后,立刻调用。
*
* Note: 使用限制:无
*
* Note: 注意事项:建议保持默认行为,尽量不使用该接口。
*
* Note: 影响范围:所有 SDK 内部错误,都会弹框提示,中断整个进程。
*
* Note: 相关回调:无
*
* Note: 相关接口:无
*
* Note: 平台差异:无
*
* @param enable 是否打开 debug 模式;默认sdk会自动判断
*/
setDebugVerbose(enable: boolean): void;
/**
* 注册回调事件
*
* Note: 支持版本:1.0.0 及以上。
*
* Note: 详情描述:用于处理 SDK 主动通知开发者回调的接口,通过注册不同 event 的事件,可以收到不同功能的回调。
*
* Note: 业务场景:通用接口,必选。
*
* Note: 调用时机:初始化之后,登录房间之前。
*
* Note: 注意事项:同样的事件可以注册多个,相同的注册事件,会根据注册的先后顺序依次触发。
*
* Note: 相关接口:调用接口 off 来注销对应回调事件处理。
*
* @param event 监听事件名。
* @param callBack 回调函数。
*
* @return 注册是否成功。
*/
on<K extends keyof ZegoRTMEvent>(event: K, callBack: ZegoRTMEvent[K]): boolean;
/**
* 获取当前SDK版本
*
* Note: 支持版本:1.0.0
*
* Note: 详情描述:需要查看当前版本时调用。
*
* Note: 业务场景:日志收集时建议使用。
*
* Note: 默认值:无
*
* Note: 调用时机:初始化后任意时机可调用。
*
* Note: 使用限制:无
*
* Note: 注意事项:无
*
* Note: 影响范围:无
*
* Note: 相关回调:无
*
* Note: 相关接口:无
*
* Note: 平台差异:无
*
* @return 为 string 字符串,例如“1.0.0.标识”
*/
getVersion(): string;
/**
* 删除注册过的回调事件
*
* Note: 支持版本:1.0.0
*
* Note: 详情描述:用于处理SDK主动通知开发者回调的接口,用于删除注册的同一类回调事件。
*
* Note: 业务场景:通用接口,必选。
*
* Note: 支默认值:无
*
* Note: 调用时机:初始化之后,登录房间之前。
*
* Note: 使用限制:无
*
* Note: 注意事项:同样的事件可以注册多个,的注册事件,会根据注册的先后顺序依次触发。
*
* Note: 影响范围:无
*
* Note: 相关回调:无
*
* Note: 相关接口:无
*
* Note: 平台差异:无
*
* @param event 监听事件名
* @param callBack? 回调函数,可选
*/
off<K extends keyof ZegoRTMEvent>(event: K, callBack?: ZegoRTMEvent[K]): boolean;
protected logger: ZegoLogger;
protected dataReport: ZegoDataReport;
protected reporter: ZReporter;
zegoWebRTM: ZegoExpressWebRTM;
/**
* 初始化Engine
*
* Note: 支持版本:1.0.0
*
* Note: 详情描述:实例化对象。
*
* Note: 业务场景:所有场景必须。
*
* Note: 默认值:无默认值,所有参数必须填写。
*
* Note: 调用时机:第一个调用。
*
* Note: 使用限制:无
*
* Note: 注意事项:server 建议填写数组,备用域名抗弱网能力更强。
*
* Note: 影响范围:无
*
* Note: 相关回调:无
*
* Note: 相关接口:无
*
* Note: 平台差异:无
*
* @param appID 用于区分不同客户和项目的唯一标识(必须是number类型); 一个appID对应一个客户项目,不同端共有一个appID实现互通 ;一个客户可以申请多个appID,
* 必须从即构控制台获取
* @param server 表示SDK连接的即构服务器地址(支持备用域名);SDK内的大多数功能由它交互 ; 同一个appID可以填写多个server; 必须从控制台获取
* @param ENV 表示sdk 环境,rtc或是小程序
*/
constructor(appID: number, server: string | string[], ENV?: number, options?: ZegoInitOptions);
static use(module: any): void;
static setGeoFence(geoFenceType: ZegoGeoFenceType, geoFenceAreaList: number[]): void;
static setEngineOptions(options: any): void;
/**
* 设置云代理配置。
*
* Note: 支持版本:3.1.0
*
* Note: 详情描述:设置云代理配置。
*
* Note: 业务场景:处于如医院、政府、公司内部等有内网等限制性的网络环境下时,希望使用公有云 RTC 或 L3 服务。
*
* Note: 调用时机:在初始化实例之前调用。
*
* Note: 使用限制:该接口在初始化实例后不可再调用修改配置,避免产生非预期的错误。
*
* @param proxyList 代理服务器信息列表。
* @param token 鉴权信息。
* @param enable 是否开启代理。
*/
static setCloudProxyConfig(proxyList: ZegoProxyInfo[], token: string, enable: boolean): void;
static setLocalProxyConfig(proxyConfig: ZegoLocalProxyConfig, enable: boolean): void;
}