远程教学之流程消息.md
4.87 KB
流程描述
- 教师端从在线授课课表发起在线授课。
- 教师端从盒子鱼服务器获取在线授课信息
- 公共群信息,用于交互
- 聊天室Id,用于音视频通讯
- 学生的个人统计信息
- 教师端登录腾讯云服务(如果登录失败,需要有错误处理)
- 教师端通知盒子鱼服务器发推送给学生端
- 如果学生端长期收不到推送,教师端会卡住,该如何处理。
- 学生端收到推送通知(是否可以取消)
- 后台监测到该学生已经在上课的群中,可以不发推送通知
- 客户端也做防错处理,如果已经处于上课状态,那么对于上课过程中的其他授课推送不做处理。
- 客户端连续多次收到上课推送,应该不影响正常上课。
- 学生端接收在线授课
- 学生端登录腾讯云服务
- 学生端上报自己的id,以及客户端元信息
- 教师端检测id合法,版本匹配,下放课程元信息
- 学生端检测本地是否已经下载了全部的多媒体资源文件。(应该需要提前下载)
- 如果需要下载,则进入下载过程,同时通知教师端,客户端开始下载资源
- 如果不需要下载,或者已经下载完毕,通知教师端已经准备好上课。
- 考虑下载失败的处理
- 学生端进入等待上课的页面,初始化音视频通讯,进入聊天室(需要有错误处理)
- 教师端收到学生准备完毕的信息后,初始化音视频通讯,进入聊天室(需要有错误处理)
- 教师端发送学习页的信息
- 教师端发送学习页的页面动作信息
- 教师端通知学生结束课程
- 学生端结束课程,同时报告给教师端
- 退出聊天室
- 登出腾讯云(需要错误处理)
- 教师结束课程,上报给服务器(服务器在课程结束之后,可能会解散群或者把双方踢出),回到前一页面。
- 退出聊天室
- 登出腾讯云(需要错误处理)
- 学生则回到课表页面。
在线授课接口定义
流程消息定义
- 学生上报自己的用户Id
- 学生收到推送之后,根据推送的信息,加入到指定的群。
- 如果该学生之前已经加入过该群,则加群之后会返回已经入群的错误码,学生可以发送自定义消息告诉教师,自己已经入群。
- 如果该学生第一次入群,把申请消息设置为自己的id,则教师端会收到有用户入群的消息,根据消息内容判断是否允许入群。
学生端上报Id的自定义消息
{
"type":"flow",
"command":"reportMetadata",
"userId":"17293"
"device":"android"
"appVersion":"4.0.0"
}
- 下发课程资源信息与教师端元数据 *教师端收到信息后,判断学生端的版本是否与自己的版本相匹配。 判断方法待定。
{
"type":"flow",
"command":"prepareCourse",
"screenWidth":1024, // For 教学画板
"screenHeight":768, // For 教学画板
"courseName":"英雄是怎样炼成的",// 学生端可以展现在等待上课画面
"attachmentType":"smallFile",
"courseEndTime":"18:00:00"//当前课程的结束时间,用来做倒计时
}
附属的小文件是一个Json格式的资源列表
[
95d8ca1ca0c5209bd75a4c2181f8609d,
7b251f924497500ed26428342a815d1b,
45bc7b7e7828020eaa016674327d5dff,
53f086e895518ee3b488404620117d56,
fc5545a9a728904dc533efcbfff1d2c5,
7b251f924497500ed26428342a815d1b
]
-
学生端开始下载课程所需要的资源(学生端动作) 如果学生端需要下载资源,则发送此消息。如果检查到无须下载新的资源,则不发送此消息。
{ "type":"flow", "command":"beginDownloadCourseResources" }
-
学生端下载失败的处理
{ "type":"flow", "command":"downloadCourseResourcesFailed" }
-
学生端已经下载好课程所需要的资源(学生端动作) 检测到本地已经下载好了全部的课程所需资源后,通知给教师端。
{ "type":"flow", "command":"downloadedAllCourseResources" }
-
发送课程页信息(教师端动作)
{ "type":"flow", "command":"coursePage", "pageIndex":3 "attachmentType":"smallFile" }
附属的小文件是一个Json格式的页面信息 (考虑到将来如果页面比较复杂,或者附加了比较长的文章,可能出现当个页面信息过长,不适合发送自定义信息的情况)
{
"pageInfo" : 页面Json信息(去掉原来Json中的pageIndex)
"swipeDirection" : 0 (0-左滑 1-右滑)
"coursePageType" : 0 (0-普通学习页,3-关键词页)
}
-
结束课程(教师端动作)
{ "type":"flow", "command":"endCourse" }
-
学生上报结束课程
{ "type":"flow", "command":"endCourse" }
教师端收到此信息后上报给盒子鱼服务器。