客户端事件列表
Client.on('eventName')
事件监听中的事件名称。
Members
(static) STREAM_ADDED
- Default Value:
-
- 'stream-added'
远端流添加事件,当远端用户发布流后会收到该通知。
Example
client.on('stream-added', event => {
const remoteStream = event.stream;
});
(static) STREAM_REMOVED
- Default Value:
-
- 'stream-removed'
远端流移除事件,当远端用户取消发布流后会收到该通知。
Example
client.on('stream-removed', event => {
const remoteStream = event.stream;
});
(static) STREAM_UPDATED
- Default Value:
-
- 'stream-updated'
远端流更新事件,当远端用户添加、移除或更换音视频轨道后会收到该通知。
Example
client.on('stream-updated', event => {
const remoteStream = event.stream;
});
(static) STREAM_SUBSCRIBED
- Default Value:
-
- 'stream-subscribed'
远端流订阅成功事件,调用 subscribe() 成功后会触发该事件。
Example
client.on('stream-subscribed', event => {
const remoteStream = event.stream;
});
(static) CONNECTION_STATE_CHANGED
- Default Value:
-
- 'connection-state-changed'
SDK 和腾讯云的连接状态变更事件,您可以利用该事件从总体上监听 SDK 与腾讯云的连接状态。
若您需要细分监听每一条 Stream 的连接状态,可以监听 StreamEvent.CONNECTION_STATE_CHANGED 事件处理。
- 'DISCONNECTED':连接断开
- 'CONNECTING':正在连接中
- 'CONNECTED':已连接
- 'RECONNECTING':自动重连中
不同状态变更的含义:
- DISCONNECTED -> CONNECTING: 正在尝试建立连接,调用进房接口时触发。
- CONNECTING -> CONNECTED: 连接建立成功,调用进房接口, Websocket 连接成功时触发
- CONNECTED -> DISCONNECTED: 连接中断,当网络异常导致连接断开时触发。
- DISCONNECTED -> RECONNECTING: 正在重连,当连接异常断开时,SDK 尝试自动重连时触发。
- RECONNECTING -> CONNECTED: SDK 自动重连成功。
- RECONNECTING -> DISCONNECTED: SDK 自动重连失败。同时会抛出 client.on('error') 事件,错误码为 SIGNAL_CHANNEL_RECONNECTION_FAILED。
处理建议:可以监听该事件,在不同状态显示不同的 UI,提醒用户当前的连接状态。
Example
client.on('connection-state-changed', event => {
const prevState = event.prevState;
const curState = event.state;
});
(static) PEER_JOIN
- Default Value:
-
- 'peer-join'
远端用户进房通知
注意:
- live 模式下,不支持观众进退房通知
- v4.8.2 之前版本,远端用户进房推流后,才会收到进房通知
v4.8.2 及其之后版本,远端用户进房,就能收到进房通知
Example
client.on('peer-join', event => {
const userId = event.userId;
});
(static) PEER_LEAVE
- Default Value:
-
- 'peer-leave'
远端用户退房通知
注意:
- live 模式下,不支持观众进退房通知
- v4.8.2 之前版本,当远端用户取消推流或退房时,都会通知退房
v4.8.2 及其之后版本,只有远端用户退房时,才会通知退房
Example
client.on('peer-leave', event => {
const userId = event.userId;
});
(static) MUTE_AUDIO
- Default Value:
-
- 'mute-audio'
远端用户禁用音频通知。
Example
client.on('mute-audio', event => {
const userId = event.userId;
});
(static) MUTE_VIDEO
- Default Value:
-
- 'mute-video'
远端用户禁用视频通知。
Example
client.on('mute-video', event => {
const userId = event.userId;
});
(static) UNMUTE_AUDIO
- Default Value:
-
- 'unmute-audio'
远端用户启用音频通知。
Example
client.on('unmute-audio', event => {
const userId = event.userId;
});
(static) UNMUTE_VIDEO
- Default Value:
-
- 'unmute-video'
远端用户启用视频通知。
Example
client.on('unmute-video', event => {
const userId = event.userId;
});
(static) CLIENT_BANNED
- Default Value:
-
- 'client-banned'
用户被踢出房间通知,被踢原因有:
- 同名用户登录同一房间,注意:同名用户同时登录同一房间是不允许的行为,可能会导致双方音视频通话异常,此乃应用业务逻辑错误!业务侧应避免出现这种情况。
- 被账户管理员使用服务端 API 踢出房间。
Note:
- 观众角色,同名用户同时登陆同一个房间,可能会收不到该事件。
- 建议您使用 WebIM SDK KICKED_OUT 或者业务侧的登录态,来避免同名用户登陆同一房间。
Example
client.on('client-banned', error => {
console.error('client-banned observed: ' + error);
// 退出刷新页面
});
(static) NETWORK_QUALITY
- Since:
-
- v4.6.0
- Default Value:
-
- 'network-quality'
网络质量统计数据事件,进房后开始统计,每两秒触发一次,包括上、下行的网络质量数据。
- 上行网络质量(uplinkNetworkQuality)为 SDK 到腾讯云的上行连接网络质量
- 下行网络质量(downlinkNetworkQuality)为腾讯云到 SDK 的所有下行连接的平均网络质量
其枚举值及含义如下表所示:
数值 含义 0 网络状况未知,表示当前 client 实例还没有建立上行/下行连接 1 网络状况极佳 2 网络状况较好 3 网络状况一般 4 网络状况差 5 网络状况极差 6 网络连接已断开
注意:若下行网络质量为此值,则表示所有下行连接都断开了
自 v4.10.3 版本开始,支持获取上、下行的 RTT 及丢包率
- uplinkRTT,uplinkLoss 为上行 RTT(ms) 及上行丢包率。
- downlinkRTT,downlinkLoss 为所有下行连接的平均 RTT(ms) 及平均丢包率。
Example
client.on('network-quality', event => {
console.log(`network-quality, uplinkNetworkQuality:${event.uplinkNetworkQuality}, downlinkNetworkQuality: ${event.downlinkNetworkQuality}`)
// 自 v4.10.3 支持获取上、下行的 RTT 及丢包率
console.log(`uplink rtt:${event.uplinkRTT} loss:${event.uplinkLoss}`)
console.log(`downlink rtt:${event.downlinkRTT} loss:${event.downlinkLoss}`)
})
(static) AUDIO_VOLUME
- Since:
-
- v4.9.0
- Default Value:
-
- 'audio-volume'
音量大小事件
调用 enableAudioVolumeEvaluation 接口开启音量大小回调后,SDK 会定时抛出该事件,通知每个 userId 的音量大小。
Note
- 回调中包含推流的本地流及已订阅的远端流的音量大小,无论是否有人说话,都会触发该回调。
- audioVolume 取值为0-100的正整数,通常认为 audioVolume > 10 的用户正在说话
Example
client.on('audio-volume', event => {
event.result.forEach(({ userId, audioVolume, stream }) => {
if (audioVolume > 10) {
console.log(`user: ${userId} is speaking, audioVolume: ${audioVolume}`);
}
})
})
// 开启音量回调,并设置每 1000ms 触发一次事件
client.enableAudioVolumeEvaluation(1000);
(static) ERROR
- Default Value:
-
- 'error'
错误事件,当出现不可恢复错误后,会抛出此事件
Example
client.on('error', error => {
console.error('client error observed: ' + error);
const errorCode = error.getCode();
// 请根据错误码列表(https://cloud.tencent.com/document/product/647/34342)查看错误类型。
// 当出现客户端错误后,请调用 Client.leave() 退房并尝试通过 Client.join() 重新进房恢复通话。
});
stream.on('error', error => {
const errorCode = error.getCode();
if (errorCode === 0x4043) {
// 自动播放受限,引导用户手势操作并调用 stream.resume 恢复音视频播放
// 参考:https://web.sdk.qcloud.com/trtc/webrtc/doc/zh-cn/module-ErrorCode.html#.PLAY_NOT_ALLOWED
} else if (errorCode === 0x4044) {
// 媒体设备被拔出后自动恢复失败,参考:https://web.sdk.qcloud.com/trtc/webrtc/doc/zh-cn/module-ErrorCode.html#.DEVICE_AUTO_RECOVER_FAILED
}
});