客户端事件列表
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’:正在连接中
- ‘RECONNECTING’:自动重连中
- ‘CONNECTED’:已连接
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'
用户被踢出房间通知,被踢原因有:
- 同名用户登录,注意:同名用户同时登陆是不允许的行为,可能会导致双方音视频通话异常,此乃应用业务逻辑错误!
- 被账户管理员主动踢出房间
建议:
- 房间内成员状态管理请使用腾讯云 WebIM SDK 或其他信令机制。
Example
client.on('client-banned', error => {
console.error('client-banned observed: ' + error);
// 退出刷新页面
});
(static) NETWORK_QUALITY
- Default Value:
-
- 'network-quality'
网络质量统计数据事件,进房后开始统计,每两秒触发一次,包括上行(uplinkNetworkQuality)和下行(downlinkNetworkQuality)的质量统计数据。
- 上行网络质量为 SDK 到腾讯云的上行连接网络质量
- 下行网络质量为 腾讯云到 SDK 的所有下行连接的平均网络质量
其枚举值及含义如下表所示:
数值 | 含义 |
---|---|
0 | 网络状况未知,表示当前 client 实例还没有建立上行/下行连接 |
1 | 网络状况极佳 |
2 | 网络状况较好 |
3 | 网络状况一般 |
4 | 网络状况差 |
5 | 网络状况极差 |
6 | 网络连接已断开 注意:若下行网络质量为此值,则表示所有下行连接都断开了 |
Example
client.on('network-quality', event => {
console.log(`network-quality, uplinkNetworkQuality:${event.uplinkNetworkQuality}, downlinkNetworkQuality: ${event.downlinkNetworkQuality}`)
})
(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.enableAudioLevelEvaluation(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
}
});