Client 接口提供音视频通话的核心功能,例如进入房间、发布和订阅音视频流等。
你可以通过以下方式来创建 client 对象:
const { Client } = require('./VolcEngineRTC_MiniApp');
返回 | 名称 |
---|---|
Promise<void> | init |
Promise<void> | destroy |
Promise<int> | setBusinessId |
Promise<string> | join |
Promise<void> | leave |
Promise<string> | publish |
Promise<void> | unpublish |
string | subscribe |
Promise<void> | unsubscribe |
Promise<void> | muteLocal |
Promise<void> | muteRemote |
Promise<void> | setUserVisibility |
void | on |
void | off |
void | reportPusherStateChange |
void | reportPusherNetStatusChange |
void | reportPlayerStateChange |
void | reportPlayerNetStatusChange |
init( appId: string, onSuccess: () => void, onFailure: (err: VolcEngineRTCError) => void, ) : void
初始化 client ,是进行所有后续操作的前提。
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
appId | string | 每个应用的唯一标识符,由 RTC 控制台随机生成的。不同的 AppId 生成的实例在 RTC 中进行音视频通话完全独立,无法互通。 | 是 | |
onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 | 无 |
onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void ,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 | 无 |
VolcEngineRTCError 配置
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
code | number | 错误码 | 否 | |
reason | string | 错误详情 | 否 |
注意
所有后续操作都需要以此函数的调用为前提。
destroy( onSuccess: () => void, onFailure: (err: VolcEngineRTCError) => void, ): void
销毁 client 实例。本地用户已经在房间内时,调用本接口将退出房间和销毁 client 实例。
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
onSuccess | function | 成功后执行的回调函数 ( ) => void ,无返回值 | 否 | 无 |
onFailure | function | 失败失败后执行的回调函数 (err: VolcEngineRTCError) => void ,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 | 无 |
VolcEngineRTCError 配置
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
code | number | 错误码 | 否 | |
reason | string | 错误详情 | 否 |
(businessId: string) => boolean
设置业务标识参数
可通过 businessId 区分不同的业务场景。businessId 由客户自定义,相当于一个“标签”,可以分担和细化现在 AppId 的逻辑划分的功能,但不需要鉴权。
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
businessId | string | businessId 只是一个标签,颗粒度需要用户自定义。 | 是 | 无 |
onSuccess | function | 成功后执行的回调函数 ( ) => boolean true :设置成功。false :设置失败。 | 否 | 无 |
onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void ,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 | 无 |
注意
需要在调用 join 之前调用,join 之后调用该方法无效。
join( token: string, roomId: string, userId: string, onSuccess: (userId: string) => void, onFailure: (err: VolcEngineRTCError) => void, ): void
初始化 client 后可以调用此接口进入房间,建立微信小程序与信令服务器的 WebSocket 长连接。
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
token | string | 动态密钥,用于对登录用户进行鉴权验证。进入房间需要携带 Token。测试时可使用控制台生成临时 Token,正式上线后需要使用密钥 SDK 在您的服务端生成并下发 Token。 | 是 | |
roomId | string | 需要进入的房间号,当传入的房间号为首次进入时,RTC SDK 将创建房间,并让用户进入该房间 | 是 | |
userId | string | 本地用户 ID。 | 是 | |
onSuccess | function | 成功后执行的回调函数 (userId: string) => void ,返回本地用户 ID。 | 否 | 无 |
onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void ,返回 VolcEngineRTCError 对象,包含错误码和错误信息。当房间内用户达到上限时,进房请求失败。如果你需要房间中容纳更多只订阅不发布的用户,调用 setUserVisibility 切换用户身份。 | 否 | 无 |
注意
leave( onSuccess: () => void, onFailure: (err: VolcEngineRTCError) => void, ): void
进入房间后可以调用此接口离开当前房间。
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
onSuccess | function | 成功后执行的回调函数 ( ) => void ,无返回值 | 否 | 无 |
onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void ,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 | 无 |
注意
publish( onSuccess: (url: string) => void, onFailure: (err: VolcEngineRTCError) => void, ): void
本地用户发布音视频流时,你需要先调用 publish
,并将它返回的音视频流 url 地址作为参数传入 live-pusher。
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
onSuccess | function | 成功后执行的回调函数 (url: string) => void ,返回发布的音视频流地址 | 否 | 无 |
onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void ,返回VolcEngineRTCError 对象,包含错误码和错误信息 | 否 | 无 |
注意
unpublish( onSuccess: () => void, onFailure: (err: VolcEngineRTCError) => void, ): void
取消发布音视频流。
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
onSuccess | function | 成功后执行的回调函数 ( ) => void ,无返回值 | 否 | 无 |
onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void ,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 | 无 |
注意
subscribe( userId: string, options: SubOptions, onSuccess: (url: string) => void, onFailure: (err: VolcEngineRTCError) => void, ): void
订阅远端音视频流。
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
userId | string | 订阅的远端用户 ID,该参数可以从 PEER_ONLINE 事件中获取 | 是 | |
options | object | 订阅配置 | 是 | 见下方表格 |
onSuccess | function | 成功后执行的回调函数 (url: string) => void ,返回音视频流的订阅地址 | 否 | 无 |
onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void ,返回VolcEngineRTCError 对象,包含错误码和错误信息 | 否 | 无 |
SubOptions 配置
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
video | boolean | 是否订阅远端视频 | 否 | true |
audio | boolean | 是否订阅远端音频 | 否 | true |
screen | boolean | 订阅的流是否为屏幕共享流,该参数可以从 STREAM_ADDED 事件中获取 | 否 | false |
注意
与 unsubscribe 为逆操作。
建议配合 EVENT.STREAM_ADDED 事件使用。
用户已经在房间内才可以调用本接口。
订阅媒体流之后,建议通过监听 UPDATE_URL 和 STREAM_FAILED 关注媒体流的接收状态。
unsubscribe( userId: string, options: { screen?: boolean }, onSuccess: () => void, onFailure: (err: VolcEngineRTCError) => void, ): void
取消订阅远端音视频流。
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
userId | string | 需要取消订阅的用户 ID | 是 | |
options | object | 取消订阅配置,指定取消订阅的流 | 是 | 见下方表格 |
onSuccess | function | 成功后执行的回调函数 ( ) => void ,无返回值 | 否 | 无 |
onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void ,返回VolcEngineRTCError 对象,包含错误码和错误信息 | 否 | 无 |
options 配置
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
screen | boolean | 订阅的流是否为屏幕共享流,该参数可以从 STREAM_ADDED 事件中获取 | 否 | false |
注意
muteLocal( options: { audio: boolean; video: boolean; }, onSuccess: () => void, onFailure: (err: VolcEngineRTCError) => void, ) : void
当你需要禁用本地音视频流采集时,请通过使用微信小程序标签 live-pusher 中的 enable-camera
和 enable-mic
实现,并调用本接口来通知服务端。
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
options | string | 是否禁用本地流:true 为禁用,false 为启用。本地流类型: audio 为音频,video 为视频。 | 是 | 无 |
onSuccess | function | 成功后执行的回调函数 ( ) => void ,无返回值。已订阅该用户的远端将触发以下回调:
| 否 | 无 |
onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回VolcEngineRTCError 对象,包含错误码和错误信息 | 否 | 无 |
muteRemote( userId: string, options: { audio: boolean; video: boolean; screen: boolean; }, onSuccess: () => void, onFailure: (err: VolcEngineRTCError) => void, ):void
暂停接收指定的远端用户的音视频流。
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
userId | string | 远端用户 ID | 是 | |
options | string | 是否禁用流:true 为禁用,false 为启用。远端音视频流禁用选项:video:视频 audio:音频 screen:当前流是否为屏幕共享流 | 是 | {screen: false} |
onSuccess | function | 成功后执行的回调函数() => void 无返回值 | 否 | 无 |
onFailure | function | 失败后执行的回调函数(err: VolcEngineRTCError) => void 返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 | 无 |
注意
setUserVisibility(enable, onSuccess, onFailure): Promise<void>;
设置用户身份。可见用户可以发布和订阅媒体流。不可见用户只能订阅媒体流。进房后默认为可见用户。
一个 RTC 房间最多同时容纳 20 名可见用户,最多 8 人可同时上麦。更多信息参看用户和媒体流上限。
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
enable | boolean | 用户是否对房间内其他用户可见: | 是 | - |
onSuccess | () => void | 成功后执行的回调函数 ( ) => void ,无返回值。 | 是 | - |
onFailure | (err: VolcEngineRTCError) => void | 失败后执行的回调函数 (err: VolcEngineRTCError) => void ,返回 VolcEngineRTCError 对象,包含错误码和错误信息。 | 是 | - |
类型: Promise
注意
on(event: string, callback: () => void): void
监听事件
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
event | string | 需要监听的事件 | 是 | |
callback | function | 事件触发时调用的回调 | 是 |
注意
与 off 为逆操作。
off(event: string, callback: () => void): void
取消监听事件
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
event | string | 需要取消监听的事件 | 是 | |
callback | function | 事件触发时调用的回调 | 是 |
注意
与 on 为逆操作。
reportPusherStateChange(code: number, message: string);
如果你需要 SDK 收集上行的媒体流状态,例如,打开摄像头失败等,可以调用本接口,将相应的数据传给 RTC SDK,由 RTC SDK 进行整理和上报。推荐和 reportPusherNetStatusChange 一起在组件中调用,方便复用。
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
code | number | 状态码 | 是 | |
message | string | 状态描述 | 是 |
注意
reportPusherStateChange(info: any);
如果你需要 SDK 收集上行的媒体流信息,例如,当前视频帧率等,可以调用本接口,将相应的数据传给 RTC SDK,由 RTC SDK 进行整理和上报。推荐配合 reportPusherStateChange 使用。
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
info | WxMediaState | 推流状态信息(帧率、码率) | 是 |
注意
reportPlayerStateChange(uid: string, code: number, message: string);
如果你需要 SDK 收集下行的媒体流状态,例如,视频播放结束等,可以调用本接口,将相应的数据传给 RTC SDK, 由 RTC SDK 进行整理和上报。推荐配合 reportPlayerNetStatusChange 使用。
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
uid | string | 订阅者的用户 id | 是 | |
code | number | 状态码 | 是 | |
message | string | 状态描述 | 是 |
注意
reportPlayerNetStatusChange(uid: string, info: any);
如果你需要 SDK 收集下行的媒体流信息,例如,当前视频帧率等,可以调用本接口,将相应的数据传给 RTC SDK, 由 RTC SDK 进行整理和上报。推荐配合 reportPlayerStateChange 使用。
参数
参数名 | 类型 | 说明 | 必填 | 默认值 |
---|---|---|---|---|
uid | string | 订阅者的用户 ID | 是 | |
info | WxMediaState | 推流状态信息(帧率、码率) | 是 |
注意