本地、远端调用不同的 RTC SDK 接口,微信小程序抛出错误,都可能触发事件,调用 client.on 来开启对这些事件的监听。你可以在回调函数中实现监听到指定事件后程序需要做出的反应。例如,监听到 DISCONNECT 时进行重连。
开启事件监听后,可以调用 client.off 来停止监听该事件。
你可以通过以下方式来创建 events 对象:
const { EVENTS } = require('./VolcEngineRTC_MiniApp');
client.on(EVENTS.STREAM_ADDED, e => void): void
以下情况都将触发该事件:
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 指定远端用户的 ID |
| e.screen | boolean | 是否为屏幕共享流 |
e.streamPublishState | object | 远端音视频发布状态:
|
client.on(EVENTS.STREAM_REMOVED, e => void): void
以下情况都将触发该事件:
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 指定远端用户的 ID |
| e.screen | boolean | 是否为屏幕共享流 |
client.on(EVENTS.UPDATE_URL, e => void): void
推流或拉流地址更新。
例如,断网重连成功后,将重新发布/订阅,成功之后 RTMP URL 地址会相应更新。
在收到此事件后,你需要将事件中的 url 参数赋值给 live-pusher 或 live-player。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 用户ID。本端或远端用户 ID |
| e.screen | boolean | 是否为屏幕流 |
| e.url | string | 更新后的推拉流地址 |
client.on(EVENTS.STREAM_FAILED, e => void): void
推流或拉流异常。
在收到此事件后,你可以尝试重新发布/订阅,或者通知用户发布/订阅失败。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 用户ID。本端或远端用户 ID |
| e.screen | boolean | 是否为屏幕流 |
| e.reason | string | 流异常的原因 |
client.on(EVENTS.MUTE_AUDIO, e => void): void
远端用户在视频流启动状态下,禁用了音频流。
如果远端用户音、视频流都禁用了,则触发 STREAM_REMOVED。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 指定远端用户的 ID |
| e.screen | boolean | 是否为屏幕共享流 |
client.on(EVENTS.UNMUTE_AUDIO, e => void): void
远端用户在视频流启动状态下,启动音频流。
如果远端用户从音视频全部禁用状态切换为启用时,则触发 STREAM_ADDED。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 指定远端用户的 ID |
| e.screen | boolean | 是否为屏幕共享流 |
client.on(EVENTS.MUTE_VIDEO, e => void): void
远端用户在音频流启动状态下,禁用了视频流。
如果远端用户音、视频流都禁用了,则触发 STREAM_REMOVED。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 指定远端用户的 ID |
| e.screen | boolean | 是否为屏幕共享流 |
client.on(EVENTS.UNMUTE_VIDEO, e => void): void
远端用户在音频流启动状态下,启动视频流。
如果远端用户从音视频全部禁用状态切换为启用时,则触发 STREAM_ADDED。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 指定远端用户的 ID |
| e.screen | boolean | 是否为屏幕共享流 |
client.on(EVENTS.CLIENT_BANNED, e => void): void
当前用户被踢出房间。你可以通过 ErrorCode 来判断具体被踢出的原因。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.errorCode | ErrorCode | 错误码 |
client.on(EVENTS.PEER_ONLINE, e => void): void
以下两种情况都将触发该事件:
同一房间内,单个小程序端用户最多只能收到 20 个用户的进房通知。详细限制和说明,请参见微信小程序 SDK 媒体能力上限。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 指定远端用户的 ID |
client.on(EVENTS.PEER_LEAVE, e => void): void
远端用户退出房间
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 指定远端用户的 ID |
client.on(EVENTS.ERROR, e => void): void
收到 WebSocket 错误回调 SocketTask.onError 将触发该事件,请根据返回的错误描述和原因进行调试。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.code | number | 微信小程序 SocketTask.onError 回调返回的错误码 |
| e.reason | string | 错误描述和原因 |
client.on(EVENTS.DISCONNECT, e => void): void
WebSocket 的异常中断事件,即 SocketTask.onClose 的返回值 code 不为 1000,可尝试重连。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.code | number | 微信小程序 WebSocket 连接关闭事件的回调 SocketTask.onClose 返回的错误码 |
| e.reason | string | 错误描述和原因 |
client.on(EVENTS.LOGIN_BANNED, () => void): void
因相同 userId 在其他设备上登录,当前设备被踢下线。通常发生在“您的账号已在其他设备登录”的场景。
触发场景
client.on(EVENTS.USER_MESSAGE_RECEIVED, e => void): void
收到来自房间内的其他用户发送的点对点文本消息。
当房间内其他用户调用 sendUserMessage 发送点对点文本消息时,会触发此事件。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 发送消息的用户 ID |
| e.message | string | 收到的文本消息 |
client.on(EVENTS.USER_BINARY_MESSAGE_RECEIVED, e => void): void
收到来自房间内的其他用户发送的点对点的二进制消息。
当房间内其他用户调用 sendUserBinaryMessage 发送点对点二进制消息时,会触发此事件。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 发送消息的用户 ID |
| e.message | ArrayBuffer | 收到的二进制消息 |
client.on(EVENTS.ROOM_MESSAGE_RECEIVED, e => void): void
收到房间内其他用户广播的文本消息。
当房间内其他用户调用 sendRoomMessage 广播文本消息时,会触发此事件。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 发送消息的用户 ID |
| e.message | string | 收到的文本消息 |
client.on(EVENTS.ROOM_BINARY_MESSAGE_RECEIVED, e => void): void
收到房间内其他用户广播的二进制消息。
当房间内其他用户调用 sendRoomBinaryMessage 广播二进制消息时,会触发此事件。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 发送消息的用户 ID |
| e.message | ArrayBuffer | 收到的二进制消息 |
client.on(EVENTS.USER_MESSAGE_RECEIVED_OUTSIDE_ROOM, e => void): void
收到房间外用户发送的点对点的文本消息。
当调用 sendUserMessageOutsideRoom 给房间外指定用户发送点对点文本消息时,该用户会收到该事件。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 发送消息的用户 ID |
| e.message | string | 收到的文本消息 |
client.on(EVENTS.USER_BINARY_MESSAGE_RECEIVED_OUTSIDE_ROOM, e => void): void
收到房间外用户发送的点对点的二进制消息。
当调用 sendUserBinaryMessageOutsideRoom 给房间外用户发送点对点二进制消息时,该用户会收到该事件。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.uid | string | 发送消息的用户 ID |
| e.message | ArrayBuffer | 收到的二进制消息 |
client.on(EVENTS.SERVER_PARAMS_SET_RESULT, e => void): void
设置业务服务器参数的结果回调。
当调用 setServerParams 设置业务服务器参数时,会触发此事件。
| 参数名 | 类型 | 说明 |
|---|---|---|
| e.error | number | 错误码,0 表示成功 |
| e.message | string | 结果信息 |