ClientEvent

客户端事件列表

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
  }
});