Client 接口提供音视频通话的核心功能,例如进入房间、发布和订阅音视频流等。
你可以通过以下方式来创建 client 对象:
const { Client } = require('./VolcEngineRTC_MiniApp');
| 返回 | 名称 |
|---|---|
Promise<void> | init |
Promise<void> | destroy |
Promise<void> | setBusinessId |
Promise<string> | join |
Promise<void> | leave |
Promise<string> | publish |
Promise<void> | unpublish |
Promise<string> | subscribe |
Promise<void> | unsubscribe |
Promise<void> | muteLocal |
Promise<void> | muteRemote |
Promise<void> | setUserVisibility |
Promise<void> | login |
Promise<void> | logout |
Promise<void> | updateLoginToken |
Promise<number> | getPeerOnlineStatus |
Promise<void> | sendUserMessage |
Promise<void> | sendUserBinaryMessage |
Promise<void> | sendRoomMessage |
Promise<void> | sendRoomBinaryMessage |
Promise<void> | sendUserMessageOutsideRoom |
Promise<void> | sendUserBinaryMessageOutsideRoom |
Promise<void> | setServerParams |
Promise<void> | sendServerMessage |
Promise<void> | sendServerBinaryMessage |
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 | VolcEngineRTCError | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
VolcEngineRTCError
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| code | number | 错误码 | 否 |
| reason | string | 错误详情 | 否 |
setBusinessId(businessId: string): Promise<void>
设置业务标识参数
可通过 businessId 区分不同的业务场景。businessId 由客户自定义,相当于一个“标签”,可以分担和细化现在 AppId 的逻辑划分的功能,但不需要鉴权。
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| businessId | string | 自定义的业务标识符。businessId 只是一个标签,颗粒度需要用户自定义。 | 是 |
| onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 |
| 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 长连接。
用户(包括后端机器人)成功进入 RTC 房间后便开始计费。即使房间内只有 1 个用户,也会计算音频计费时长。具体计费说明,请参见音视频通话计费。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| token | string | 动态密钥,用于对登录用户进行鉴权验证。进入房间需要携带 Token。测试时可使用控制台生成临时 Token,正式上线后需要使用密钥 SDK 在您的服务端生成并下发 Token。详细说明,请参见使用 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
进入房间后可以调用此接口离开当前房间。
只要有用户在 RTC 房间,就会至少计算该用户的音频计费时长。后端服务创建的机器人,同样被视为计费用户。为避免产生不必要的费用,请确保及时让所有用户退出房间。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| 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 | SubOptions | 订阅配置。 | 是 |
| 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 | options | 取消订阅配置,指定取消订阅的流。 | 是 |
| 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 | options | 是否禁用本地音频或视频流。 | 是 |
| onSuccess | function | 成功后执行的回调函数 ( ) => void,无返回值。已订阅该用户的远端将触发以下回调:
| 否 |
| onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回VolcEngineRTCError对象,包含错误码和错误信息 | 否 |
options
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| video | boolean | 是否禁用本地视频,默认值为 true | 是 |
| audio | boolean | 是否禁用本地音频,默认值为 true | 是 |
muteRemote( userId: string, options: { audio: boolean; video: boolean; screen: boolean; }, onSuccess: () => void, onFailure: (err: VolcEngineRTCError) => void, ):void
暂停接收指定的远端用户的音视频流。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| userId | string | 远端用户 ID | 是 |
| options | options | 是否暂停接收远端用户的音视频流 | 是 |
| onSuccess | function | 成功后执行的回调函数() => void 无返回值 | 否 |
| onFailure | function | 失败后执行的回调函数(err: VolcEngineRTCError) => void返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
option
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| video | boolean | 是否禁用视频流,默认值为 true | 是 |
| audio | boolean | 是否禁用音频流,默认值为 true | 是 |
| screen | boolean | 是否禁用屏幕共享流,默认值为 false | 否 |
注意
setUserVisibility(enable, onSuccess, onFailure): Promise<void>;
设置用户身份。可见用户可以发布和订阅媒体流。不可见用户只能订阅媒体流。进房后默认为可见用户。
一个 RTC 房间最多同时容纳 20 名可见用户,最多 8 人可同时上麦。更多信息参看用户和媒体流上限。
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| enable | boolean | 用户是否对房间内其他用户可见: | 是 |
| onSuccess | () => void | 成功后执行的回调函数 ( ) => void ,无返回值。 | 是 |
| onFailure | (err: VolcEngineRTCError) => void | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息。 | 是 |
类型: Promise
注意
login( token: string, userId: string, onSuccess?: () => void, onFailure?: (err: VolcEngineRTCError) => void, ): Promise<void>
登录 RTS 服务器。登录后,可以收发消息,或向同 appID 下其他已登陆用户发送文本或二进制消息。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| token | string | 动态密钥,用于对登录用户进行鉴权验证。详细说明,请参见使用 Token 完成鉴权。 | 是 |
| userId | string | 用户 ID。 | 是 |
| onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 |
| onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
注意
DUPLICATE_LOGIN 错误。logout( onSuccess?: () => void, onFailure?: (err: VolcEngineRTCError) => void, ): Promise<void>
登出 RTS 服务器。登出后,无法再调用消息相关的方法或收到相关回调。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 |
| onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
updateLoginToken( token: string, onSuccess?: () => void, onFailure?: (err: VolcEngineRTCError) => void, ): Promise<void>
更新用户用于登录 RTS 服务器的 Token。Token 有一定的有效期,当 Token 过期时,需调用此方法更新登录的 Token 信息。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| token | string | 更新的动态密钥 | 是 |
| onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 |
| onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
注意
getPeerOnlineStatus( userId: string, onSuccess?: () => void, onFailure?: (err: VolcEngineRTCError) => void, ): Promise<number>
查询本地/远端用户的登录状态。在发送消息之前,你可以通过本接口了解对端用户是否登录,从而决定是否发送消息。也可以通过本接口查询自己的登录状态。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| userId | string | 需要查询的用户 ID | 是 |
| onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 |
| onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
返回值Promise<number>: 用户登录状态,0-未登录,1-已登录。
注意
sendUserMessage( userId: string, message: string, onSuccess?: () => void, onFailure?: (err: VolcEngineRTCError) => void, ): Promise<void>
给房间内的指定用户发送点对点文本消息。若消息发送成功,则 userId 所指定的用户会收到 USER_MESSAGE_RECEIVED 回调。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| userId | string | 消息接收用户的 ID | 是 |
| message | string | 发送的文本消息内容,消息不超过 64 KB。 | 是 |
| onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 |
| onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
sendUserBinaryMessage( userId: string, message: ArrayBuffer, onSuccess?: () => void, onFailure?: (err: VolcEngineRTCError) => void, ): Promise<void>
给房间内指定的用户发送点对点二进制消息。若消息发送成功,则 userId 所指定的用户会收到 USER_BINARY_MESSAGE_RECEIVED 回调。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| userId | string | 消息接收用户的 ID | 是 |
| message | ArrayBuffer | 发送的二进制消息内容,消息不超过 64 KB。 | 是 |
| onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 |
| onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
sendRoomMessage( message: string, onSuccess?: () => void, onFailure?: (err: VolcEngineRTCError) => void, ): Promise<void>
给房间内的所有其他用户广播文本消息。若消息发送成功,同一房间内的其他用户会收到 ROOM_MESSAGE_RECEIVED 回调。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| message | string | 发送的文本消息内容,消息不超过 64 KB。 | 是 |
| onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 |
| onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
sendRoomBinaryMessage( message: ArrayBuffer, onSuccess?: () => void, onFailure?: (err: VolcEngineRTCError) => void, ): Promise<void>
给房间内的所有其他用户广播二进制消息。若消息发送成功,同一房间内的其他用户会收到 ROOM_BINARY_MESSAGE_RECEIVED 回调。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| message | ArrayBuffer | 发送的二进制消息内容,消息不超过 64 KB。 | 是 |
| onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 |
| onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
sendUserMessageOutsideRoom( userId: string, message: string, onSuccess?: () => void, onFailure?: (err: VolcEngineRTCError) => void, ): Promise<void>
给房间外的指定用户发送点对点文本消息。若消息发送成功,userId 所指定的用户会收到 USER_MESSAGE_RECEIVED_OUTSIDE_ROOM 回调。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| userId | string | 消息接收用户的 ID | 是 |
| message | string | 发送的文本消息内容。消息不超过 64 KB。 | 是 |
| onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 |
| onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
sendUserBinaryMessageOutsideRoom( userId: string, message: ArrayBuffer, onSuccess?: () => void, onFailure?: (err: VolcEngineRTCError) => void, ): Promise<void>
给房间外的指定用户发送点对点二进制消息。若消息发送成功,userId 所指定的用户会收到 USER_BINARY_MESSAGE_RECEIVED_OUTSIDE_ROOM 回调。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| userId | string | 消息接收用户的 ID | 是 |
| message | ArrayBuffer | 发送的二进制消息内容。消息不超过 64 KB。 | 是 |
| onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 |
| onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
setServerParams( signature: string, url: string, onSuccess?: () => void, onFailure?: (err: VolcEngineRTCError) => void, ): Promise<void>
设置业务服务器参数。调用后,业务服务器会收到 SERVER_PARAMS_SET_RESULT 回调。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| signature | string | 动态签名,应用服务器可使用该签名对消息来源进行验证 | 是 |
| url | string | 业务服务器的地址 | 是 |
| onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 |
| onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
sendServerMessage( message: string, onSuccess?: () => void, onFailure?: (err: VolcEngineRTCError) => void, ): Promise<void>
客户端给业务服务器发送文本消息。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| message | string | 发送的文本消息内容。消息不超过 64 KB。 | 是 |
| onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 |
| onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
sendServerBinaryMessage( message: ArrayBuffer, onSuccess?: () => void, onFailure?: (err: VolcEngineRTCError) => void, ): Promise<void>
客户端给业务服务器发送二进制消息。
参数
| 参数名 | 类型 | 说明 | 必填 |
|---|---|---|---|
| message | ArrayBuffer | 发送的二进制消息内容。消息不超过 64 KB。 | 是 |
| onSuccess | function | 成功后执行的回调函数 () => void ,无返回值 | 否 |
| onFailure | function | 失败后执行的回调函数 (err: VolcEngineRTCError) => void,返回 VolcEngineRTCError 对象,包含错误码和错误信息 | 否 |
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 | 状态描述 | 是 |
注意
reportPusherNetStatusChange(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 | 推流状态信息(帧率、码率) | 是 |
注意