You need to enable JavaScript to run this app.
导航
API 详情
最近更新时间:2024.11.27 14:53:39首次发布时间:2022.01.21 10:38:44
Client

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
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

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

参数

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

VolcEngineRTCError 配置

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

注意

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

destroy

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

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

参数

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

VolcEngineRTCError 配置

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

setBusinessId

(businessId: string) => boolean

设置业务标识参数
可通过 businessId 区分不同的业务场景。businessId 由客户自定义,相当于一个“标签”,可以分担和细化现在 AppId 的逻辑划分的功能,但不需要鉴权。

参数名类型说明必填默认值
businessIdstringbusinessId 只是一个标签,颗粒度需要用户自定义。
onSuccessfunction成功后执行的回调函数 ( ) => boolean
  • true:设置成功。
  • false:设置失败。
  • onFailurefunction失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息

    注意

    需要在调用 join 之前调用,join 之后调用该方法无效。

    join

    join(
        token: string,
        roomId: string,
        userId: string,
        onSuccess: (userId: string) => void,
        onFailure: (err: VolcEngineRTCError) => void,
      ): void
    

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

    参数

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

    注意

    • 同一个 client 实例只可以同时进入一个房间。
    • leave 为逆操作。
    • 调用该接口将触发远端的 PEER_ONLINE 事件,不同平台的事件名称可能略有差异,此处以微信小程序端的事件名称为例。
    • 一个 RTC 房间最多同时容纳 20 名可见用户,最多 8 人可同时上麦。更多信息参看用户和媒体流上限

    leave

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

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

    参数

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

    注意

    1. join 为逆操作。
    2. 调用该接口将触发远端的 PEER_LEAVE 事件,不同平台的事件名称可能略有差异,此处以微信小程序端的事件名称为例。

    publish

    publish(
        onSuccess: (url: string) => void,
        onFailure: (err: VolcEngineRTCError) => void,
      ): void
    

    本地用户发布音视频流时,你需要先调用 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_URLSTREAM_FAILED 关注媒体流的发布状态。

    unpublish

    unpublish(
        onSuccess: () => void,
        onFailure: (err: VolcEngineRTCError) => void,
      ): void
    

    取消发布音视频流。

    参数

    参数名类型说明必填默认值
    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
    

    订阅远端音视频流。

    参数

    参数名类型说明必填默认值
    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_URLSTREAM_FAILED 关注媒体流的接收状态。

    unsubscribe

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

    取消订阅远端音视频流。

    参数

    参数名类型说明必填默认值
    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
    

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

    参数

    参数名类型说明必填默认值
    optionsstring是否禁用本地流:true 为禁用,false 为启用。
    本地流类型:audio 为音频,video 为视频。
    onSuccessfunction成功后执行的回调函数 ( ) => void,无返回值。
    已订阅该用户的远端将触发以下回调: 不同平台的事件名称可能略有差异,此处以微信小程序端的事件名称为例。
    onFailurefunction失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回VolcEngineRTCError对象,包含错误码和错误信息

    muteRemote

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

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

    参数

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

    注意

    • 指定的远端用户为已订阅的用户才可以调用本接口。
    • 调用 muteRemote 接口后,服务器将暂停推送指定的流,而如果调用 unSubscribe 接口,服务端将停止对指定流进行转码。

    setUserVisibility

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

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

    参数

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

    返回值

    类型: Promise
    注意

    • 该方法在加入房间前后均可调用。
    • 在房间内调用此方法,房间内其他用户会收到相应的回调通知:
      • 从 false 切换至 true 时,房间内其他用户会收到 PEER_ONLINE 回调通知;
      • 从 true 切换至 false 时,房间内其他用户会收到 PEER_LEAVE 回调通知。

    on

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

    监听事件

    参数

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

    注意

    off 为逆操作。

    off

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

    取消监听事件

    参数

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

    注意

    on 为逆操作。

    reportPusherStateChange

    reportPusherStateChange(code: number, message: string);
    

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

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

    注意

    • 强烈建议集成该接口,以便后续运维操作。
    • 状态码 code 详情请在微信小程序文档中查询。

    reportPusherNetStatusChange

    reportPusherStateChange(info: any);
    

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

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

    注意

    • 强烈建议集成该接口,以便后续运维操作。
    • 网络状态数据 info 详情请在微信小程序文档中查询。

    reportPlayerStateChange

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

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

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

    注意

    reportPlayerNetStatusChange

    reportPlayerNetStatusChange(uid: string, info: any);
    

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

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

    注意