Client

Client 接口提供音视频通话的核心功能,例如进入房间、发布和订阅音视频流等。

你可以通过以下方式来创建 client 对象:

const { Client } = require('./VolcEngineRTC_MiniApp');
typescript
成员函数
返回名称
Promise<void> init
Promise<void>destroy
Promise<string>join
Promise<void>leave
Promise<string>publish
Promise<void>unpublish
stringsubscribe
Promise<void>unsubscribe
Promise<void>muteLocal
Promise<void>muteRemote
Promise<void>setUserVisibility
voidon
voidoff
void reportPusherStateChange
voidreportPusherNetStatusChange
voidreportPlayerStateChange
voidreportPlayerNetStatusChange
函数说明
init
init(
    appId: string,
    onSuccess: () => void,
    onFailure: (err: VolcEngineRTCError) => void,
  ) : void
typescript

初始化 client ,是进行所有后续操作的前提。

参数

参数名类型说明必填默认值
appIdstring每个应用的唯一标识符,由 RTC 控制台随机生成的。不同的 AppId 生成的实例在 RTC 中进行音视频通话完全独立,无法互通。是
onSuccessfunction成功后执行的回调函数 () => void ,无返回值否无
onFailurefunction失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息否无

VolcEngineRTCError 配置

参数名类型说明必填默认值
codenumber错误码否
reasonstring错误详情否

注意

所有后续操作都需要以此函数的调用为前提。

destroy
destroy(
    onSuccess: () => void,
    onFailure: (err: VolcEngineRTCError) => void,
  ): void
typescript

销毁 client 实例。本地用户已经在房间内时,调用本接口将退出房间和销毁 client 实例。

参数

参数名类型说明必填默认值
onSuccessfunction成功后执行的回调函数 ( ) => void ,无返回值否无
onFailurefunction失败失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息否无

VolcEngineRTCError 配置

参数名类型说明必填默认值
codenumber错误码否
reasonstring错误详情否
join
join(
    token: string,
    roomId: string,
    userId: string,
    onSuccess: (userId: string) => void,
    onFailure: (err: VolcEngineRTCError) => void,
  ): void
typescript

初始化 client 后可以调用此接口进入房间,建立微信小程序与信令服务器的 WebSocket 长连接。

参数

参数名类型说明必填默认值
tokenstring动态密钥,用于对登录用户进行鉴权验证。进入房间需要携带 Token。测试时可使用控制台生成临时 Token,正式上线后需要使用密钥 SDK 在您的服务端生成并下发 Token。是
roomIdstring需要进入的房间号,当传入的房间号为首次进入时,RTC SDK 将创建房间,并让用户进入该房间是
userIdstring本地用户 ID。是
onSuccessfunction成功后执行的回调函数 (userId: string) => void,返回本地用户 ID。否无
onFailurefunction失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息。当房间内用户达到上限时,进房请求失败。如果你需要房间中容纳更多只订阅不发布的用户,调用 setUserVisibility 切换用户身份。否无

注意

leave
leave(
    onSuccess: () => void,
    onFailure: (err: VolcEngineRTCError) => void,
  ): void
typescript

进入房间后可以调用此接口离开当前房间。

参数

参数名类型说明必填默认值
onSuccessfunction成功后执行的回调函数 ( ) => void ,无返回值否无
onFailurefunction失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息否无

注意

  1. 与 join 为逆操作。
  2. 调用该接口将触发远端的 PEER_LEAVE 事件,不同平台的事件名称可能略有差异,此处以微信小程序端的事件名称为例。
publish
publish(
    onSuccess: (url: string) => void,
    onFailure: (err: VolcEngineRTCError) => void,
  ): void
typescript

本地用户发布音视频流时,你需要先调用 publish,并将它返回的音视频流 url 地址作为参数传入 live-pusher。
参数

参数名类型说明必填默认值
onSuccessfunction成功后执行的回调函数 (url: string) => void ,返回发布的音视频流地址否无
onFailurefunction失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回VolcEngineRTCError对象,包含错误码和错误信息否无

注意

  1. 与 unpublish 为逆操作。
  2. 用户已经在房间内才可以调用本接口。
  3. SDK 会对发布音视频流的用户进行鉴权,只有当该用户的 Token 是具有发布权限的才能成功发流。
  4. 建议提醒用户同时打开摄像机和麦克风权限,否则无法正常发布媒体流。
  5. 调用该接口将触发已订阅了该用户的远端的 STREAM_ADDED 事件,不同平台的事件名称可能略有差异,此处以微信小程序端的事件名称为例。
  6. 开始发布媒体流之后,建议通过监听 UPDATE_URL 和 STREAM_FAILED 关注媒体流的发布状态。
unpublish
unpublish(
    onSuccess: () => void,
    onFailure: (err: VolcEngineRTCError) => void,
  ): void
typescript

取消发布音视频流。

参数

参数名类型说明必填默认值
onSuccessfunction成功后执行的回调函数 ( ) => void ,无返回值否无
onFailurefunction失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息否无

注意

  1. 与 publish 为逆操作。
  2. 用户发布音视频流后可以调用本接口。
  3. 调用该接口将在已订阅了该用户的远端触发 STREAM_REMOVED 事件,不同平台的事件名称可能略有差异,此处以微信小程序端的事件名称为例。
subscribe
subscribe(
    userId: string,
    options: SubOptions,
    onSuccess: (url: string) => void,
    onFailure: (err: VolcEngineRTCError) => void,
  ): void
typescript

订阅远端音视频流。

参数

参数名类型说明必填默认值
userIdstring订阅的远端用户 ID,该参数可以从 PEER_ONLINE 事件中获取是
optionsobject订阅配置是见下方表格
onSuccessfunction成功后执行的回调函数 (url: string) => void ,返回音视频流的订阅地址否无
onFailurefunction失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回VolcEngineRTCError对象,包含错误码和错误信息否无

SubOptions 配置

参数名类型说明必填默认值
videoboolean是否订阅远端视频否true
audioboolean是否订阅远端音频否true
screenboolean订阅的流是否为屏幕共享流,该参数可以从 STREAM_ADDED 事件中获取否false

注意

  1. 与 unsubscribe 为逆操作。

  2. 建议配合 EVENT.STREAM_ADDED 事件使用。

  3. 用户已经在房间内才可以调用本接口。

  4. 订阅媒体流之后,建议通过监听 UPDATE_URL 和 STREAM_FAILED 关注媒体流的接收状态。

unsubscribe
unsubscribe(
    userId: string,
    options: { screen?: boolean },
    onSuccess: () => void,
    onFailure: (err: VolcEngineRTCError) => void,
  ): void
typescript

取消订阅远端音视频流。

参数

参数名类型说明必填默认值
userIdstring需要取消订阅的用户 ID是
optionsobject取消订阅配置,指定取消订阅的流是见下方表格
onSuccessfunction成功后执行的回调函数 ( ) => void ,无返回值否无
onFailurefunction失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回VolcEngineRTCError对象,包含错误码和错误信息否无

options 配置

参数名类型说明必填默认值
screenboolean订阅的流是否为屏幕共享流,该参数可以从 STREAM_ADDED 事件中获取否false

注意

  1. 与 subscribe 为逆操作。
  2. 本地用户已经订阅了远端用户才可以调用本接口。
muteLocal
muteLocal(
    options: {
      audio: boolean;
      video: boolean;
    },
    onSuccess: () => void,
    onFailure: (err: VolcEngineRTCError) => void,
  ) : void
typescript

当你需要禁用本地音视频流采集时,请通过使用微信小程序标签 live-pusher 中的 enable-camera 和 enable-mic 实现,并调用本接口来通知服务端。

参数

参数名类型说明必填默认值
optionsstring本地流已禁用类型:
audio: 音频;
video: 视频
是无
onSuccessfunction成功后执行的回调函数 ( ) => void ,无返回值否无
onFailurefunction失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回VolcEngineRTCError对象,包含错误码和错误信息否无

注意

调用该接口将在已订阅了该用户的远端触发 MUTE_AUDIO / UNMUTE_AUDIO 或 MUTE_VIDEO / UNMUTE_VIDEO 事件,不同平台的事件名称可能略有差异,此处以微信小程序端的事件名称为例。

muteRemote
muteRemote(
    userId: string,
    options: {
      audio: boolean;
      video: boolean;
      screen: boolean;
    },
    onSuccess: () => void,
    onFailure: (err: VolcEngineRTCError) => void,
  ):void
typescript

暂停接收指定的远端用户的音视频流。

参数

参数名类型说明必填默认值
userIdstring远端用户 ID是
optionsstring远端音视频流禁用选项:
video:视频
audio:音频
screen:当前流是否为屏幕共享流
是{screen: false}
onSuccessfunction成功后执行的回调函数
() => void
无返回值
否无
onFailurefunction失败后执行的回调函数
(err: VolcEngineRTCError) => void
返回VolcEngineRTCError 对象,包含错误码和错误信息
否无

注意

setUserVisibility
setUserVisibility(enable, onSuccess, onFailure): Promise<void>;
typescript

设置用户身份。可见用户可以发布和订阅媒体流。不可见用户只能订阅媒体流。进房后默认为可见用户。
一个 RTC 房间最多同时容纳 20 名可见用户,最多 8 人可同时上麦。更多信息参看用户和媒体流上限。

参数
参数名类型说明必填默认值
enableboolean用户是否对房间内其他用户可见:
  • true: 默认,可见用户,可以在房间内发布音视频流,房间中的其他用户将收到用户的行为通知,例如进房、开启视频采集和退房。
  • false: 不可见用户,不可以在房间内发布音视频流,房间中的其他用户不会收到用户的行为通知,例如进房、开启视频采集和退房。
  • 是-
    onSuccess() => void成功后执行的回调函数 ( ) => void ,无返回值。是-
    onFailure(err: VolcEngineRTCError) => void失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息。是-
    返回值

    类型: Promise
    注意

    on
    on(event: string, callback: () => void): void
    
    typescript

    监听事件

    参数

    参数名类型说明必填默认值
    eventstring需要监听的事件是
    callbackfunction事件触发时调用的回调是

    注意

    与 off 为逆操作。

    off
    off(event: string, callback: () => void): void
    
    typescript

    取消监听事件

    参数

    参数名类型说明必填默认值
    eventstring需要取消监听的事件是
    callbackfunction事件触发时调用的回调是

    注意

    与 on 为逆操作。

    reportPusherStateChange
    reportPusherStateChange(code: number, message: string);
    
    typescript

    如果你需要 SDK 收集上行的媒体流状态,例如,打开摄像头失败等,可以调用本接口,将相应的数据传给 RTC SDK,由 RTC SDK 进行整理和上报。推荐和 reportPusherNetStatusChange 一起在组件中调用,方便复用。
    参数

    参数名类型说明必填默认值
    codenumber状态码是
    messagestring状态描述是

    注意

    状态码 code 详情请在微信小程序文档中查询。

    reportPusherNetStatusChange
    reportPusherStateChange(info: any);
    
    typescript

    如果你需要 SDK 收集上行的媒体流信息,例如,当前视频帧率等,可以调用本接口,将相应的数据传给 RTC SDK,由 RTC SDK 进行整理和上报。推荐配合 reportPusherStateChange 使用。
    参数

    参数名类型说明必填默认值
    infoWxMediaState推流状态信息(帧率、码率)是

    注意

    网络状态数据 info 详情请在微信小程序文档中查询。

    reportPlayerStateChange
    reportPlayerStateChange(uid: string, code: number, message: string);
    
    typescript

    如果你需要 SDK 收集下行的媒体流状态,例如,视频播放结束等,可以调用本接口,将相应的数据传给 RTC SDK, 由 RTC SDK 进行整理和上报。推荐配合 reportPlayerNetStatusChange 使用。
    参数

    参数名类型说明必填默认值
    uidstring订阅者的用户 id是
    codenumber状态码是
    messagestring状态描述是

    状态码 code 详情请在微信小程序官方文档中查询。

    reportPlayerNetStatusChange
    reportPlayerNetStatusChange(uid: string, info: any);
    
    typescript

    如果你需要 SDK 收集下行的媒体流信息,例如,当前视频帧率等,可以调用本接口,将相应的数据传给 RTC SDK, 由 RTC SDK 进行整理和上报。推荐配合 reportPlayerStateChange 使用。
    参数

    参数名类型说明必填默认值
    uidstring订阅者的用户 ID是
    infoWxMediaState推流状态信息(帧率、码率)是

    注意

    网络状态数据 info 详情请在微信小程序官方文档中查询。