跳到主要内容

课堂生命周期

课堂业务状态流转

左右滑动查看完整图示

课堂业务状态流转状态由服务端确定。已结课为 ended,未开课即失效为 expired;客户端退出不改变全班课堂状态。尚未开课not_startedcreating / pending课堂进行中in_progresslive已结课ended已加载内容只读未开课已失效expired已加载内容只读客户端退出与资源释放leaveClassroom() 退出当前用户destroy() 释放当前 SDK 实例开课结课未开课失效
状态由服务端确定。已结课为 ended,未开课即失效为 expired;客户端退出不改变全班课堂状态。
课堂业务状态流转

左右滑动查看完整图示

课堂业务状态流转状态由服务端确定。已结课为 ended,未开课即失效为 expired;客户端退出不改变全班课堂状态。尚未开课not_startedcreating / pending课堂进行中in_progresslive已结课ended已加载内容只读未开课已失效expired已加载内容只读客户端退出与资源释放leaveClassroom() 退出当前用户destroy() 释放当前 SDK 实例开课结课未开课失效

状态由服务端确定。已结课为 ended,未开课即失效为 expired;客户端退出不改变全班课堂状态。

课堂业务状态​

客户端 lifecycleStatus后台状态含义
not_startedcreating / pending课堂已创建,尚未开课
in_progresslive已开课,操作继续受角色、权限和上下台状态约束
endedended正常结课,已加载内容只读
expiredexpired未正常开课并已失效,已加载内容只读

通过 getClassInfo().lifecycleStatus 读取服务端确定的课堂状态。ended 表示已结课,expired 表示未开课即失效;计划时间不直接决定客户端状态。

startsAt / endsAt 是计划时间;actualStartedAt / endedAt 是真实上下课时间。effectiveEndsAt 包含实际开始时间、课时与拖堂约束。SDK 提供 timerMode(hidden、countdown、elapsed)和 timerSeconds,界面只负责格式化。

客户端连接阶段​

进课就绪与媒体连接

左右滑动查看完整图示

进课就绪与媒体连接后台与 IM 就绪后触发 onJoinSuccess。RTC 和白板分别通过 onJoinProgress 报告连接状态;后台或 IM 失败会回滚进课。此流程适用于配套的 session-control 源码构建。sdk-api 进课鉴权与课堂配置接收 init 与运行凭证IM 就绪登录 · 确认课堂群session ready · 成员快照onJoinSuccess后台与 IM 必要链路就绪RTC / 白板初始化按 init 配置启用分别建立连接onJoinProgress报告各能力的状态就绪 / 失败按能力分别连接
后台与 IM 就绪后触发 onJoinSuccess。RTC 和白板分别通过 onJoinProgress 报告连接状态;后台或 IM 失败会回滚进课。此流程适用于配套的 session-control 源码构建。
进课就绪与媒体连接

左右滑动查看完整图示

进课就绪与媒体连接后台与 IM 就绪后触发 onJoinSuccess。RTC 和白板分别通过 onJoinProgress 报告连接状态;后台或 IM 失败会回滚进课。此流程适用于配套的 session-control 源码构建。sdk-api 进课鉴权与课堂配置接收 init 与运行凭证IM 就绪登录 · 确认课堂群session ready · 成员快照onJoinSuccess后台与 IM 必要链路就绪RTC / 白板初始化按 init 配置启用分别建立连接onJoinProgress报告各能力的状态就绪 / 失败按能力分别连接

后台与 IM 就绪后触发 onJoinSuccess。RTC 和白板分别通过 onJoinProgress 报告连接状态;后台或 IM 失败会回滚进课。此流程适用于配套的 session-control 源码构建。

配置课堂 ID 与用户 Token 后,SDK 按以下顺序进课:

  1. SDK 发起 POST /v1/classrooms/join。
  2. 根据 init 配置初始化 IM、白板、RTC。凭证分别取自响应对应部分。
  3. IM 登录并确认课堂群后,完成 session ready 与成员快照读取。
  4. 后台和 IM 必要链路就绪,触发 onJoinSuccess。
  5. 白板和 RTC 通过 onJoinProgress 继续报告各自状态。

后台或 IM 失败会回滚进课;白板或 RTC 失败会标记对应能力失败,并允许其余界面继续工作。HTTP 200 或 SDK 方法受理成功都不能替代上述就绪事件。

下课与离开​

endClass() / 服务端 classrooms.end() 表示全班结课。leaveClassroom() 仅退出当前用户,destroy() 释放当前 SDK 资源。关闭页面不应无条件调用结课方法。

媒体开关由用户动作和有效权限共同决定。老师可请求用户打开设备,但不能绕过用户和系统授权强行打开设备。设备状态以 onStreamInfoChanged 为准。

重连​

SDK 的恢复流程读取服务端权威快照并处理 IM 信令顺序。宿主不需要自行重复调用 join HTTP 或手动拼接 session-control 请求。自绘白板应按 onWhiteboardRecoveryRequested 等事件执行同步重载;官方 UI Kit 已连接相应入口。

上述连接流程适用于配套的 session-control 服务端与客户端源码构建。使用客户端 0.1.1 发布包时,请先查看协议兼容性说明。