关于用户掉线的处理机制.md 2 KB

消息断线的检测

考虑利用音视频的状态检测,而不用服务器的心跳机制(尽量减少服务器端的工作)
当用户断线或者崩溃退出的时候,都会触发对方的音视频事件更新
由于断线造成联络的中断,状态信息都在内存中。
由于崩溃退出,再次进入需要读取缓存的信息。
  • 由于网络断线原因引起的音视频无法对话

    双方都会收到音视频事件更新。
    首先检查自己的网络状态,
    如果网络状态为断线,则提醒客户端检查网络连接
    如果网络正常,则出现提示画面,提示有可能对方出了问题
    
  • 如果是由于崩溃退出

    需要把当前的在线授课状态信息持久化(正常退出课程的时候进行清理)
    客户端再次进入后,检查是否存在授课缓存文件,如果存在,则提示,您有一个进行中的课程,是否需要进入
    

进入之后,进入上一次退出的页面。 对于教师端,进入页面后,重新发送该页信息。 对于学生端,进入页面后,询问服务器是否本次课程已经结束。 如果未结束,则向教师请求当前最新的页面,教师端再次发送当前的页面后,也重置自身的页面到初始状态。


* 关于在线授课状态的保存

在本地保存一份缓存文件,在正常进入课程前清理之前可能遗留的文件, 在授课过程中保存缓存信息,在授课正常结束之后清除缓存信息。

缓存信息项目包括
  * 当前学习状态的保存(教师版缓存,跟学习历史一样的逻辑,安卓版需要追加学习历史相关的逻辑)
  * 当前的发送页索引,发送动作索引,接收页索引,接收动作索引
  * 推送信息的保存(学生端保存)
  * 通讯所需的公共群Id,聊天室Id的保存(教师端)

* 关于学生端向教师端重新请求页面的命令

{ type:"flow" command:"requestCoursePage" }