客户端事件列表
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'
WebSocket 信令通道连接状态变化事件
- ‘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
- 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://trtc-1252463788.file.myqcloud.com/web/docs/module-ErrorCode.html#.PLAY_NOT_ALLOWED
} else if (errorCode === 0x4044) {
// 媒体设备被拔出后自动恢复失败,参考:https://trtc-1252463788.file.myqcloud.com/web/docs/module-ErrorCode.html#.DEVICE_AUTO_RECOVER_FAILED
}
});
(static) PLAYER_STATE_CHANGED
- Default Value:
-
- 'player-state-changed'
Audio/Video Player 状态变化事件 App 可根据状态变化来更新 UI,比如,通过监听 video player 状态变化来关闭或打开遮板。
-
'PLAYING':开始播放
-
'PAUSED':暂停播放
- event.reason 为 ‘pause’ 时,由 <audio>/<video> element 的 pause 事件触发,如果在 Stream.play() 后 App 移动相关 div 容器,在 Chrome M70 版本以下的浏览器上可能会触发该事件,此时您需要调用 Stream.resume() 继续播放。
- event.reason 为 ‘mute’ 时。详见事件 MediaStreamTrack.mute_event
- 若 LocalStream 触发该事件,表明音频/视频采集暂停,通常是设备异常引起,如设备被其他应用抢占,此时需引导用户重新采集。
- 若 RemoteStream 触发该事件,表明收到的音频/视频数据不足以播放。通常是网络抖动引起,接入侧无需做任何处理。当收到的数据足以播放时,会自动恢复。
-
'STOPPED':停止播放
reason 状态变化原因:
- ‘playing’:开始播放,详见事件 HTMLMediaElement.playing_event
- ‘mute’:音视频轨道暂时未能提供数据,详见事件 MediaStreamTrack.mute_event
- ‘unmute’:音视频轨道恢复提供数据,详见事件 MediaStreamTrack.unmute_event
- ‘ended’:音视频轨道已被关闭
Example
stream.on('player-state-changed', event => {
console.log(`${event.type} player is ${event.state} because of ${event.reason}`);
});
(static) SCREEN_SHARING_STOPPED
- Default Value:
-
- 'screen-sharing-stopped'
本地屏幕分享停止事件通知,仅对本地屏幕分享流有效。
Example
stream.on('screen-sharing-stopped', () => {
console.log('screen sharing was stopped');
});