Event

客户端事件列表

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'

远端用户进房通知,只有主动推流的远端用户进房才会收到该通知。

注意:

  • 目前 peer-join/peer-leave 事件尚不是严格意义上的用户进退房通知,房间内成员状态管理请使用腾讯云 WebIM SDK 或其他信令机制。
Example
client.on('peer-join', event => {
  const userId = event.userId;
});

(static) PEER_LEAVE

Default Value:
  • 'peer-leave'

远端用户退房通知,只有主动推流的远端用户退房才会收到该通知。

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

网络质量统计数据事件,进房后开始统计,每两秒触发一次,包括上行(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) ERROR

Default Value:
  • 'error'

客户端错误事件,当出现不可恢复错误后 Client 会通过该事件上报。

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() 重新进房恢复通话。
});

(static) StreamEvent

Stream 事件列表 Stream.on() 监听的事件。

(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’ 时,表明音视频轨道暂时未能提供数据
  • 'STOPPED':停止播放

reason 状态变化原因:

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