Skip to content

全局事件

SDK 通过事件通知业务层状态变化。所有事件通过 classroom.on(TEvent.XXX, handler) 监听。

使用方式

typescript
import { TencentClassroom, TEvent } from '@tencent-classroom/sdk';

const classroom = new TencentClassroom();
await classroom.init();

// 持久监听
classroom.on(TEvent.KICK_OUT, ({ reason, message }) => {
  alert(message);
});

// 一次性监听
classroom.once(TEvent.CLASS_START, () => {
  console.log('课堂已开始');
});

// Promise 风格等待
await classroom.waitFor(TEvent.JOIN_CLASS);

事件列表

课堂生命周期

常量事件值说明
TEvent.JOIN_CLASSjoinClass进房成功(joinClass 完成,所有模块就绪)
TEvent.LEAVE_CLASSleaveClass离房完成(leaveClass 所有资源释放后触发)
TEvent.BEFORE_LEAVEbeforeLeave即将离房(leaveClass 开始时触发,可用于显示"离开中..."Loading)
TEvent.AFTER_LEAVEafterLeave离房结束后(LEAVE_CLASS 之后触发)
TEvent.CLASS_INFO_MODIFIEDclassInfoModified课堂信息被修改(服务端下发 class_info_modified 信令)
TEvent.CLASS_STARTclassStart课堂开始(startClass 成功后所有端收到)
TEvent.CLASS_ENDclassEnd课堂结束(endClass 成功后所有端收到)
TEvent.KICK_OUTkickOut被踢出课堂(payload 含原因和本地化消息)
TEvent.CLASS_INFO_CHANGE_REQUESTEDclassInfoChangeRequested课堂信息变更请求(需要本地确认的课堂配置变更)
TEvent.CLASS_INFO_UPDATEDclassInfoUpdated课堂信息已更新(classInfo$ 同步完成后触发)
TEvent.CLASS_TASK_CHANGEclassTaskChange课堂任务列表变更(白板任务 ClassTask 列表变化)
TEvent.TASK_UPDATEDtaskUpdated单个业务任务更新(防乱序处理后触发,携带完整 TaskInfo)
TEvent.ENABLE_STAGE_CHANGEDenableStageChanged举手连麦开关状态变化(老师操作后所有端同步)。
TEvent.JOIN_PROGRESS_CHANGEDjoinProgressChanged进房流程阶段变化(每次 JoinProgress 枚举值切换时触发)。

成员事件

常量事件值说明
TEvent.MEMBER_JOINmemberJoin成员加入课堂(包含完整 MemberInfo)
TEvent.MEMBER_LEAVEmemberLeave成员离开课堂(包含完整 MemberInfo)
TEvent.MEMBER_STAGE_UPmemberStageUp成员上台(stage=true,包含完整 MemberInfo)
TEvent.MEMBER_STAGE_DOWNmemberStageDown成员下台(stage=false,包含完整 MemberInfo)
TEvent.MEMBER_DEVICE_CHANGEmemberDeviceChange成员设备状态变更(change_member_stream 信令驱动,通知 MediaRenderer 刷新渲染)。
TEvent.SELF_ONLINEselfOnline自己上线(成员列表确认当前用户在线)
TEvent.SELF_OFFLINEselfOffline自己掉线/断线(可能触发重连流程)

权限事件

常量事件值说明
TEvent.PERMISSION_UPDATEpermissionUpdate权限列表批量更新(老师操作权限后所有端收到)
TEvent.MY_PERMISSION_CHANGEmyPermissionChange自己的权限变化(state.boardPermission$ 等同步前此事件触发)
TEvent.SCHOOL_INFO_READYschoolInfoReady学校信息加载完成(含套餐配置和水印配置)

设备事件

常量事件值说明
TEvent.DEVICE_CHANGEdeviceChange本地设备插拔变更(摄像头/麦克风/扬声器 接入或拔出)。

RTC 事件

常量事件值说明
TEvent.USER_ENTER_ROOMuserEnterRoom远端用户进入 TRTC 房间
TEvent.USER_LEAVE_ROOMuserLeaveRoom远端用户离开 TRTC 房间
TEvent.USER_VIDEO_AVAILABLEuserVideoAvailable远端用户视频流可用/不可用(available=true 表示开启摄像头,false 表示关闭)。
TEvent.USER_AUDIO_AVAILABLEuserAudioAvailable远端用户音频流可用/不可用。
TEvent.USER_AUDIO_MUTEuserAudioMute远端用户音频 mute/unmute(主动静音,与 available 不同)。
TEvent.USER_SUB_STREAM_AVAILABLEuserSubStreamAvailable远端用户辅流(屏幕共享)可用/不可用
TEvent.LOCAL_VIDEO_STATSlocalVideoStats本地视频推流统计数据(每 2s 触发一次)
TEvent.LOCAL_AUDIO_STATSlocalAudioStats本地音频推流统计数据
TEvent.REMOTE_VIDEO_STATSremoteVideoStats远端视频拉流统计数据
TEvent.REMOTE_AUDIO_STATSremoteAudioStats远端音频拉流统计数据
TEvent.SCREEN_SHARE_STARTEDscreenShareStarted本端屏幕共享已开启
TEvent.SCREEN_SHARE_STOPPEDscreenShareStopped本端屏幕共享已停止
TEvent.REMOTE_SCREEN_SHARE_STARTEDremoteScreenShareStarted远端用户开始屏幕共享(payload 含 userId)
TEvent.REMOTE_SCREEN_SHARE_STOPPEDremoteScreenShareStopped远端用户停止屏幕共享

IM 事件

常量事件值说明
TEvent.RECV_MESSAGErecvMessage收到新聊天消息(已加入 messageList$,此事件用于触发通知/滚动等 UI 操作)
TEvent.RECV_CUSTOM_MSGrecvCustomMsg收到原始自定义群消息(未经 SDK 解析,ext/data/from 字段原样透传)
TEvent.RECV_CUSTOM_IM_MSGrecvCustomImMsg收到自定义 IM 消息(已包装为 Message 格式)
TEvent.MESSAGE_REVOKEDmessageRevoked消息被撤回(msgId 为被撤回消息的 ID)
TEvent.IM_CONNECTEDimConnectedIM 已连接
TEvent.IM_DISCONNECTEDimDisconnectedIM 断开(正在重连或无法重连)
TEvent.IM_KICKEDimKickedIM 账号在其他端登录,本端被踢出
TEvent.IM_SIG_EXPIREDimSigExpiredIM 签名过期(需重新获取 sig 后重新进房)
TEvent.IM_CMD_MESSAGEimCmdMessage信令群指令消息(来自 cmdGroup,gzip 解压后,内部模块消费)
TEvent.IM_C2C_ADMIN_MSGimC2CAdminMsg后端 C2C saasadmin 下发控制指令(内部模块消费)

白板事件

常量事件值说明
TEvent.BOARD_ERRORboardError白板运行时错误(code=1/3/8 等,重试耗尽后触发,业务层应展示错误提示)。
TEvent.BOARD_SIG_ERRORboardSigError白板签名/鉴权错误(code=7 签名过期 / code=11 签名无效,需重新进房)。
TEvent.BOARD_READYboardReady白板就绪(历史数据同步完成,boardReady$=true,可执行翻页/工具等操作)。
TEvent.BOARD_INITboardInit白板 DOM 挂载完成(TEB_INIT,历史数据同步中)
TEvent.BOARD_WARNboardWarn白板非致命警告(code=10 页数达上限等)
TEvent.BOARD_IMAGE_STATUS_CHANGEDboardImageStatusChanged白板图片加载状态变更(TEB_IMAGE_STATUS_CHANGED)
TEvent.BOARD_H5PPT_STATUS_CHANGEDboardH5PptStatusChangedH5 PPT 动效状态变更(TEB_H5PPT_STATUS_CHANGED)
TEvent.BOARD_H5FILE_STATUS_CHANGEDboardH5FileStatusChangedH5 文件状态变更(TEB_H5FILE_STATUS_CHANGED)
TEvent.BOARD_MEDIA_STATUS_CHANGEDboardMediaStatusChanged白板 PPT 媒体播放状态(TEB_H5PPT_MEDIA_STATUS_CHANGED)。
TEvent.BOARD_VIDEO_STATUS_CHANGEDboardVideoStatusChanged白板内嵌视频状态变更(TEB_VIDEO_STATUS_CHANGED)
TEvent.BOARD_AUDIO_STATUS_CHANGEDboardAudioStatusChanged白板音频状态变更(TEB_AUDIO_STATUS_CHANGED)
TEvent.BOARD_ADD_TRANSCODE_FILEboardAddTranscodeFile转码课件加载到白板成功(TEB_ADDTRANSCODEFILE,返回白板内部 fileId)。

课件事件

常量事件值说明
TEvent.DOC_LOAD_COURSEWAREdocLoadCourseware课件加载到白板的内部事件(DocModule → BoardModule,SDK 内部解耦)。
TEvent.DOC_PLAY_AUDIOdocPlayAudio音频课件播放指令(SDK 不内置播放器,由 UIKit 层实现)。
TEvent.DOC_LIST_UPDATEDdocListUpdated课件列表更新(上传/删除/进房后自动触发;data.documents 为完整课件列表)。
TEvent.DOC_TRANSCODE_PROGRESSdocTranscodeProgress课件转码进度更新(内部,一般通过 DOC_UPLOAD_PROGRESS 统一消费)
TEvent.DOC_UPLOAD_PROGRESSdocUploadProgress课件上传/转码进度更新(贯穿整个上传周期:COS 上传 → 服务端转码 → 完成)。

媒体播放事件

常量事件值说明
TEvent.VOD_STARTvodStartVOD 视频开始播放(payload 含 url)
TEvent.VOD_PAUSEvodPauseVOD 视频暂停
TEvent.VOD_RESUMEvodResumeVOD 视频恢复播放
TEvent.VOD_STOPvodStopVOD 视频停止
TEvent.VOD_ENDvodEndVOD 视频播放完毕
TEvent.VOD_SEEKvodSeekVOD 视频跳转(payload 含 time 秒)
TEvent.MUSIC_STARTmusicStart背景音乐开始播放(payload 含 url)
TEvent.MUSIC_STOPmusicStop背景音乐停止
TEvent.MUSIC_PAUSEmusicPause背景音乐暂停
TEvent.MUSIC_RESUMEmusicResume背景音乐恢复
TEvent.MUSIC_SEEKmusicSeek背景音乐跳转

字幕事件

常量事件值说明
TEvent.SUBTITLE_UPDATEsubtitleUpdate收到实时字幕数据(来自 TRTC 自定义消息或云端 ASR)。
TEvent.RTC_CUSTOM_MSGrtcCustomMsgTRTC 自定义消息中继(RtcModule → SubtitleModule,内部事件)

水印

常量事件值说明
TEvent.WATERMARK_UPDATEwatermarkUpdate水印配置变更(setWatermarkConfig 调用或服务端下发后触发)。
TEvent.MARQUEE_UPDATEmarqueeUpdate跑马灯配置变更(setMarqueeConfig 调用或服务端下发后触发)。

网络检测事件

常量事件值说明
TEvent.NETWORK_SPEED_TEST_RESULTnetworkSpeedTestResultTRTC 测速结果(checkMediaServerConnection 完成后触发)。

网络监控事件

常量事件值说明
TEvent.NETWORK_BROKENnetworkBroken网络断开(globalNetworkStatus$.needStrongAlert=true 时通常已触发 GlobalAlert)
TEvent.NETWORK_WEAKnetworkWeak网络弱(画质可能降级)
TEvent.NETWORK_RECOVEREDnetworkRecovered网络恢复正常

举手

常量事件值说明
TEvent.HAND_UPhandUp某成员举手/取消举手(status=true=举手,status=false=取消)
TEvent.ASK_STAGE_REQUESTaskStageRequest学生发起申请上台请求(老师端收到,可审批或拒绝)
TEvent.ASK_STAGE_ACCEPTEDaskStageAccepted老师同意自己的申请上台(学生端收到)
TEvent.ASK_STAGE_REJECTEDaskStageRejected老师拒绝自己的申请上台(学生端收到)
TEvent.ASK_STAGE_CANCELLEDaskStageCancelled老师取消/清空邀请列表,自己不再在列表中(学生端收到)
TEvent.ASK_STAGE_UPDATEaskStageUpdate举手邀请列表更新(v1/stage 信令驱动)
TEvent.STAGE_LOOP_ACTIONstageLoopAction循环上台动作通知(v1/stage_loop 信令驱动)

C2C 控制事件

常量事件值说明
TEvent.RECV_MEMBER_ACTIONrecvMemberAction老师执行成员操作(C2C type=0,来自 saasadmin,学生端接收)
TEvent.QUESTION_ANSWEREDquestionAnswered有学生提交了答题答案(老师端收到,questionId 用于对应题目)
TEvent.TRANSLATE_MSGtranslateMsg翻译结果回调(v1/translate 信令,包含原文和译文)

答题器事件

常量事件值说明
TEvent.QUESTION_BEGINquestionBegin答题开始(所有端收到,payload 含题目 ID/选项数/时长等)
TEvent.QUESTION_ABANDONquestionAbandon答题废弃/取消(不计分,直接结束)
TEvent.QUESTION_CLOSEquestionClose答题关闭(可查看统计,但仍接受答案一段时间)
TEvent.QUESTION_ENDquestionEnd答题完全结束(状态重置为 idle)

AI 课堂

常量事件值说明
TEvent.AI_CLASS_READYaiClassReadyAI 课堂就绪(taskId 为 AI 任务 ID)

AV 权限变更(细粒度,联动 MediaRenderer)

常量事件值说明
TEvent.AV_ADDavAdd新增 AV 权限条目(成员新上台或获得新权限)
TEvent.AV_UPDATEavUpdateAV 权限条目更新(stage/camera/mic/screen 等字段变化)
TEvent.AV_REMOVEavRemoveAV 权限条目移除(成员下台)
TEvent.ADJUST_HEARTBEATadjustHeartbeat@internal 请求调整心跳间隔(MemberModule → RoomModule)
TEvent.RESTORE_HEARTBEATrestoreHeartbeat@internal 请求恢复默认心跳间隔
TEvent.BURST_HEARTBEATburstHeartbeatBurst heartbeat (PermissionModule self-offline → RoomModule)
TEvent.CONFIRM_ACTIONconfirmAction@internal 需要用户确认的操作(如邀请上台弹框)
TEvent.SILENCE_USERsilenceUserUser silenced/unsilenced (MemberModule → ImModule; triggers silenceUserOnMsgList) (internal)
TEvent.HEARTBEAT_TASK_SEQheartbeatTaskSeq@internal 心跳驱动的任务序列号同步(RoomModule → ClassModule)
TEvent.HEARTBEAT_PERMISSION_SEQheartbeatPermissionSeq@internal 心跳驱动的权限序列号同步(RoomModule → PermissionModule)
TEvent.PERMISSION_REVOKEDpermissionRevokedPermission revoked (PermissionModule → RtcModule; triggers device stop) (internal)
TEvent.MUTE_ALL_CHANGEDmuteAllChangedAll-mute changed (ClassModule → RtcModule; stops local mic on mute) (internal)
TEvent.MUTE_VIDEO_ALL_CHANGEDmuteVideoAllChangedAll-video-mute changed (ClassModule → RtcModule; stops local camera on mute) (internal)
TEvent.KICKOUT_CMDkickoutCmd@internal kickOut 信令指令(CommandModule → KickOutHandler)
TEvent.KICKOUT_FOREVER_CMDkickoutForeverCmd@internal kickOutForever 信令指令(CommandModule → KickOutHandler)
TEvent.PERMISSION_SYNCpermissionSync@internal 权限列表同步(CommandModule → PermissionModule)
TEvent.SET_MUSIC_VOLUMEsetMusicVolume@internal 设置背景音乐音量(MediaPlayModule → RtcModule)

移动端事件

常量事件值说明
TEvent.SOFT_KEYBOARDsoftKeyboard软键盘弹出/收回(visible=true 弹出,height 单位 px)
TEvent.APP_RESIZEDappResized应用窗口尺寸变化(Electron 或 WebView 宿主调整窗口大小)
TEvent.BACK_PRESSEDbackPressed移动端返回键按下(Android 系统返回按钮)
TEvent.ORIENTATION_CHANGEorientationChange设备方向变化(portrait/landscape)

资源加载事件

常量事件值说明
TEvent.LOAD_RESOURCE_ERRORloadResourceError资源加载错误(白板 SDK / 第三方脚本等)
TEvent.TRY_RELOAD_RESOURCEtryReloadResource尝试重新加载资源

版本

常量事件值说明
TEvent.VERSION_UPDATEversionUpdate检测到新版本可用(UIKit 可弹出更新提示)
TEvent.LANGUAGE_CHANGEDlanguageChanged语言切换完成(setLocale 调用后触发)。

错误

常量事件值说明
TEvent.ERRORerror统一错误通道(所有模块错误汇聚于此,payload 含 module / code / message / detail)。
TEvent.WARNwarn统一警告通道(非致命问题,如白板页数接近上限)。

快直播事件

常量事件值说明
TEvent.STREAM_UPDATEstreamUpdate流列表更新(RoomModule 进房时 + CommandModule change_member_stream 信令驱动)。
TEvent.AUTOPLAY_FAILEDautoplayFailed浏览器自动播放策略阻止了视频播放(TCPlayer blocked 事件触发)。
TEvent.AUTOPLAY_CONFIRMautoplayConfirm用户已点击确认播放,所有被阻播放器已恢复(可隐藏"点击播放"提示)。
TEvent.LIVE_VOLUME_UPDATEliveVolumeUpdate快直播音量回调(WebLiveAdapter.enableVolumeEvaluation 驱动,用于音量动画 UI)。