远程教学之流程消息.md 3.71 KB

返回远程教学相关文档

流程描述

  • 客户端在启动的时候,登录腾讯通信云服务,登录后记录状态。在用户登出的的时候,同时登出腾讯通信云服务。
  • 教师根据课表打开课程,选择远程教学模式进入,开始远程授课,
    • 如果当前登录成功,则教师向服务器申请本次上课所需要的公开群信息和音视频Room的信息(a)。
    • 如果当前未登录成功,则再次尝试登录,登录成功后,执行(a)
    • 登录不成功,则提示用户,服务当前不可用。请退出重试,或者联系我们。
  • 教师创建公开群,并且进入音视频房间,进入后通知盒子鱼服务器通知给相应的学生
  • 学生接到通知后选择同意,加入公开群,并且进入音视频房间
  • 教师收到学生进入公开群的消息后,下放本次课程所需要的资源信息。
  • 学生端检查是否已经下载完全部的资源, 如果未下载则进行下载,下载完通知给教师端。 (或者在学生已经确定上哪一课的时候,由后台先偷偷下载一批, 但是上课的时候,仍然需要再次检查)
  • 教师端收到学生端资源齐备的消息后,进入课程,开始上课,同时通知给服务器上课开始了,同时发送各种控制消息。
  • 学生端收到控制消息后,展现相应的课程内容,在教师允许学生回答的时候,可以进行答题操作
  • 教师结束课程,上报给服务器,同时回到书架或者课表页面。学生则回到课表页面。

以上为开发第一阶段的流程设计。

  • 第一阶段,服务器只负责公共群和音视频房间的信息管理
  • 第二阶段,服务器可以通过腾讯云通信IM的API进行更多的控制工作,例如公共群和音视频房间的创建可以由服务器进行。

流程消息定义

  • 开始课程(教师端动作)

    {
    "type":"flow",
    "command":"beginCourse"
    "requireStudentClientMinVersion":{"ios":"6.6.0", "android":"3.2.0"}
    }
    
  • 接受课程(学生端动作)

    {
    "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月中旬会推出这个服务)

教师端

教师端掉线
教师端异常退出

学生端

学生端掉线
学生端异常退出