课堂生命周期
左右滑动查看完整图示
课堂业务状态
客户端 lifecycleStatus | 后台状态 | 含义 |
|---|---|---|
not_started | creating / pending | 课堂已创建,尚未开课 |
in_progress | live | 已开课,操作继续受角色、权限和上下台状态约束 |
ended | ended | 正常结课,已加载内容只读 |
expired | expired | 未正常开课并已失效,已加载内容只读 |
通过 getClassInfo().lifecycleStatus 读取服务端确定的课堂状态。ended 表示已结课,expired 表示未开课即失效;计划时间不直接决定客户端状态。
startsAt / endsAt 是计划时间;actualStartedAt / endedAt 是真实上下课时间。effectiveEndsAt 包含实际开始时间、课时与拖堂约束。SDK 提供 timerMode(hidden、countdown、elapsed)和 timerSeconds,界面只负责格式化。
客户端连接阶段
左右滑动查看完整图示
配置课堂 ID 与用户 Token 后,SDK 按以下顺序进课:
- SDK 发起
POST /v1/classrooms/join。 - 根据
init配置初始化 IM、白板、RTC。凭证分别取自响应对应部分。 - IM 登录并确认课堂群后,完成 session ready 与成员快照读取。
- 后台和 IM 必要链路就绪,触发
onJoinSuccess。 - 白板和 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 发布包时,请先查看协议兼容性说明。