远程教学之流程消息.md
4.04 KB
流程描述
- 客户端在启动的时候,登录腾讯通信云服务,登录后记录状态。在用户登出的的时候,同时登出腾讯通信云服务。
- 教师根据课表打开课程,选择远程教学模式进入,开始远程授课,
- 如果当前登录成功,则教师向服务器申请本次上课所需要的公开群信息和音视频Room的信息(a)。
- 如果当前未登录成功,则再次尝试登录,登录成功后,执行(a)
- 登录不成功,则提示用户,服务当前不可用。请退出重试,或者联系我们。
- 教师创建公开群,并且进入音视频房间,进入后通知盒子鱼服务器通知给相应的学生
- 学生接到通知后选择同意,加入公开群,并且进入音视频房间
- 教师收到学生进入公开群的消息后,下放本次课程所需要的资源信息。
- 学生端检查是否已经下载完全部的资源, 如果未下载则进行下载,下载完通知给教师端。 (或者在学生已经确定上哪一课的时候,由后台先偷偷下载一批, 但是上课的时候,仍然需要再次检查)
- 教师端收到学生端资源齐备的消息后,进入课程,开始上课,同时通知给服务器上课开始了,同时发送各种控制消息。
- 学生端收到控制消息后,展现相应的课程内容,在教师允许学生回答的时候,可以进行答题操作
- 教师结束课程,上报给服务器,同时回到书架或者课表页面。学生则回到课表页面。
以上为开发第一阶段的流程设计。
- 第一阶段,服务器只负责公共群和音视频房间的信息管理
- 第二阶段,服务器可以通过腾讯云通信IM的API进行更多的控制工作,例如公共群和音视频房间的创建可以由服务器进行。
在线授课接口定义
流程消息定义
- 开始课程(教师端动作)
{ "type":"flow", "command":"beginCourse" "requireStudentClientMinVersion":{"ios":"6.6.0", "android":"3.2.0"} }
注:服务器提供接口获取跟当前教师版相对应的允许授课的学生版最低版本信息。 如果学生版版本过低,要有相应的处理策略。提醒用户应该升级版本,之后是否允许用户继续学习?(to do)
-
接受课程(学生端动作)
{ "type":"flow", "command":"acceptCourse" }
-
下发课程资源信息与教师端元数据(教师端动作)
{ "type":"flow", "command":"prepareCourse", "screenWidth":1024, "screenHeight":768, "device":"ios" "appVersion":"6.6.0" "attachmentType":"smallFile" }
附属的小文件是一个Json格式的资源列表
[
95d8ca1ca0c5209bd75a4c2181f8609d,
7b251f924497500ed26428342a815d1b,
45bc7b7e7828020eaa016674327d5dff,
53f086e895518ee3b488404620117d56,
fc5545a9a728904dc533efcbfff1d2c5,
7b251f924497500ed26428342a815d1b
]
-
学生端已经下载好课程所需要的资源(学生端动作)
{ "type":"flow", "command":"downloadedAllCourseResources" }
-
发送课程页信息(教师端动作)
{ "type":"flow", "command":"coursePage", "attachmentType":"smallFile" }
附属的小文件是一个Json格式的页面信息 (考虑到将来如果页面比较复杂,或者附加了比较长的文章,可能出现当个页面信息过长,不适合发送自定义信息的情况)
-
结束课程(教师端动作)
{ "type":"flow", "command":"endCourse" }
错误处理
需要实现一套心跳机制,确保服务器知道客户端是否还在会话中。
- 对于不在会话中的用户,要保证其可以恢复会话。
- 对于在会话中的用户,在适当的时候要通知其等待会话恢复正常。
或者由腾讯云官方给出用户在线状态的回调通知(通过QQ技术群确认,大概在3月中旬会推出这个服务)