EVENT

接入侧需要监听处理的事件列表,详细如下:

Members

(static) IM_READY

SDK 进入 ready 状态时触发,接入侧监听此事件,然后可调用 SDK 发送消息等api,使用 SDK 的各项功能

Example
let onIMReady = function(event) {
  im.sendTextMessage({
    roomID: 'AV1',
    priority: TWebLive.TYPES.MSG_PRIORITY_NORMAL,
    text: 'hello from TWebLive'
  });
}
im.on(TWebLive.EVENT.IM_READY, onIMReady);

(static) IM_NOT_READY

SDK 进入 not ready 状态时触发,此时接入侧将无法使用 SDK 发送消息等功能。

Example
let onIMNotReady = function(event) {
  // 如果想使用发送消息等功能,接入侧需驱动 SDK 进入 ready 状态,重新调用 login 接口即可,如下所示:
  // im.login({userID: 'your userID', userSig: 'your userSig'});
};
im.on(TWebLive.EVENT.IM_NOT_READY, onIMNotReady);

(static) IM_TEXT_MESSAGE_RECEIVED

收到文本消息时触发

Example
let onTextMessageReceived = function(event) {
  event.data.forEach(function(message) {
    console.log('demo | ' + (message.from || message.nick) + ' : ', message.payload.text);
  });
};
im.on(TWebLive.EVENT.IM_TEXT_MESSAGE_RECEIVED, onTextMessageReceived);

(static) IM_CUSTOM_MESSAGE_RECEIVED

收到自定义消息时触发

Example
let onCustomMessageReceived = function(event) {
  console.log('demo | custom message received', event.data);
};
im.on(TWebLive.EVENT.IM_CUSTOM_MESSAGE_RECEIVED, onCustomMessageReceived);

(static) IM_IMAGE_MESSAGE_RECEIVED

收到图片消息时触发。v1.1.0 起支持

Example
let onImageMessageReceived = function(event) {
  console.log('demo | image message received', event.data);
};
im.on(TWebLive.EVENT.IM_IMAGE_MESSAGE_RECEIVED, onImageMessageReceived);

(static) IM_REMOTE_USER_JOIN

有远端用户进入直播间时触发

Example
let onRemoteUserJoin = function(event) {
  event.data.forEach(function(message) {
    console.log('demo | ' + (message.nick || message.payload.userIDList[0]) + ' 来了');
  });
};
im.on(TWebLive.EVENT.IM_REMOTE_USER_JOIN, onRemoteUserJoin);

(static) IM_REMOTE_USER_LEAVE

有远端用户离开直播间时触发

Example
let onRemoteUserLeave = function(event) {
  event.data.forEach(function(message) {
    console.log('demo ' + (message.nick || message.payload.userIDList[0]) + ' 走了');
  });
};
im.on(TWebLive.EVENT.IM_REMOTE_USER_LEAVE, onRemoteUserLeave);

(static) IM_KICKED_OUT

用户被踢下线时触发

Example
let onKickedOut = function(event) {
  console.log(event.data.type);
  // TWebLive.TYPES.KICKED_OUT_MULT_ACCOUNT(Web端,同一账号,多页面登录被踢)
  // TWebLive.TYPES.KICKED_OUT_MULT_DEVICE(同一账号,多端登录被踢)
  // TWebLive.TYPES.KICKED_OUT_USERSIG_EXPIRED(签名过期)
};
im.on(TWebLive.EVENT.IM_KICKED_OUT, onKickedOut);

(static) IM_NET_STATE_CHANGED

网络状态发生改变

Example
let onNetStateChange = function(event) {
  // event.data.state 当前网络状态,枚举值及说明如下:
  // TWebLive.TYPES.NET_STATE_CONNECTED - 已接入网络
  // TWebLive.TYPES.NET_STATE_CONNECTING - 连接中。很可能遇到网络抖动,SDK 在重试。接入侧可根据此状态提示“当前网络不稳定”或“连接中”
  // TWebLive.TYPES.NET_STATE_DISCONNECTED - 未接入网络。接入侧可根据此状态提示“当前网络不可用”。SDK 仍会继续重试,若用户网络恢复,SDK 会自动同步消息
};
im.on(TWebLive.EVENT.IM_NET_STATE_CHANGED, onNetStateChange);

(static) IM_PUSH_STOPPED

主播停止推流时触发

Example
let onPushStopped = function(event) {
  console.log('postscript: ', event.data);
};
im.on(TWebLive.EVENT.IM_PUSH_STOPPED, onPushStopped);

(static) PLAYER_PLAYING

播放器进入播放状态时触发

Example
let onPlayerPlaying = function(event) {
};
tweblive.on(TWebLive.EVENT.PLAYING, onPlayerPlaying);

(static) PLAYER_PAUSE

播放器暂停时触发

Example
let onPlayerPause = function(event) {
};
tweblive.on(TWebLive.EVENT.PAUSE, onPlayerPause);

(static) PLAYER_ERROR

播放器遇到错误时触发

Example
let onError = function(event) {
  // event.data.code - 错误码
  // event.data.message - 错误信息
};
tweblive.on(TWebLive.EVENT.ERROR, onError);

(static) PLAYER_AUTOPLAY_NOT_ALLOWED

浏览器不允许播放器自动播放,需引导用户手动点击播放

Example
let onPlayerAutoPlayNotAllowed = function(event) {
};
player.on(TWebLive.EVENT.PLAYER_AUTOPLAY_NOT_ALLOWED, onPlayerAutoPlayNotAllowed);

(static) RTC_CONNECTION_STATE_CHANGED

WebSocket 信令通道连接状态变化事件

  • ‘DISCONNECTED’:连接断开
  • ‘CONNECTING’:正在连接中
  • ‘RECONNECTING’:自动重连中
  • ‘CONNECTED’:已连接
Example
let onRTCConnectionStateChanged = function(event) {
  const prevState = event.prevState;
  const curState = event.state;
};
pusher.on(TWebLive.EVENT.RTC_CONNECTION_STATE_CHANGED, onRTCConnectionStateChanged);

(static) RTC_CLIENT_BANNED

用户被踢出房间通知,被踢原因有:

  • 同名用户登录,注意:同名用户同时登陆是不允许的行为,可能会导致双方音视频通话异常,此乃应用业务逻辑错误!
  • 被账户管理员主动踢出房间

建议:

  • 房间内成员状态管理请使用腾讯云 WebIM SDK 或其他信令机制。
Example
let onRTCClientBanned = function(event) {
  console.error('client-banned observed: ' + event);
  // 退出刷新页面
};
pusher.on(TWebLive.EVENT.RTC_CLIENT_BANNED, onRTCClientBanned);

(static) RTC_SCREEN_CAPTURE_STOPPED

主播停止了屏幕分享。v1.1.0 起支持

Example
let onRTCScreenCaptureStopped = function(event) {
};
pusher.on(TWebLive.EVENT.RTC_SCREEN_CAPTURE_STOPPED, onRTCScreenCaptureStopped);

(static) RTC_NETWORK_QUALITY

网络质量统计数据事件,进房后开始统计,每两秒触发一次,包括上行(uplinkNetworkQuality)和下行(downlinkNetworkQuality)的质量统计数据。

  • 上行网络质量为 SDK 到腾讯云的上行连接网络质量
  • 下行网络质量为 腾讯云到 SDK 的所有下行连接的平均网络质量

其枚举值及含义如下表所示:

数值 含义
0 网络状况未知,表示当前 client 实例还没有建立上行/下行连接
1 网络状况极佳
2 网络状况较好
3 网络状况一般
4 网络状况差
5 网络状况极差
6 网络连接已断开
注意:若下行网络质量为此值,则表示所有下行连接都断开了
Example
let onRTCNetworkQuality = function(event) {
  console.log(`network-quality, uplinkNetworkQuality:${event.uplinkNetworkQuality},
  downlinkNetworkQuality: ${event.downlinkNetworkQuality}`);
};
pusher.on(TWebLive.EVENT.RTC_NETWORK_QUALITY, onRTCNetworkQuality);

(static) RTC_CLIENT_ERROR

客户端错误事件。

Example
let onRTCClientError = function(event) {
  console.error('client error observed: ' + event);
  const errorCode = event.getCode();
  // 请根据错误码列表(https://cloud.tencent.com/document/product/647/34342)查看错误类型。
  // 当出现客户端错误后,请调用 pusher.exitRoom() 退房并尝试通过 pusher.enterRoom() 重新进房恢复通话。
};
pusher.on(TWebLive.EVENT.RTC_CLIENT_ERROR, onRTCClientError);