2018-12-27 12:08
一、服务端需求是这样:
1. 用户上传ppt课件到服务端,服务端解析成多张图片。同时保存ppt地址和多张图片的地址。ppt 和解析出来的多张图片要上传到阿里云。一个课程可以有多个ppt文件,每个ppt文件又可以转换为多张图片。
2. 客户端获取图片的时候一次返回所有ppt的图片
二、客户端需求
1. 老师点击白板的时候产生一个Canvas,然后通过聊天的socket发送各种绘制图形的命令传递给不同的学生,在学生端同步绘制出老师的操作
2. 老师点击新增一页白板或者删除一页版本的时候也要记录对应的命令,方便回看的时候客户端重绘
3. 白板和ppt的逻辑实现通用,ppt是白板的Canvas加载了背景图片
4. 老师点击新增一页或者删除一页的时候要把动作同步到数据库。新增的时候要把Canvas转换成图片上传到服务端并保存,可以跟ppt公用库。执行删除操作的时候就在数据库里面把对应的Canva转成的图片标记为已删除,然后客户端播放的时候根据时间判断,时间点超过了已删除的时间删除过的就不能再通过上一页和下一页显示出来
5. 加载ppt作为Canvas的时候根据ppt的页数生成白板页数,不能有添加或者删除操作。
https://git.links123.net/links123.com/ppt2png.git
1. 提供上传ppt并把ppt转图片的接口
2. 提供获取ppt列表接口
3. 提供获取命令消息历史记录接口,接口可以通过参数筛选出来白板绘制相关的命令
白板的命令消息格式联系narro 筛选里面的字段看看narro要筛选那个
1. 通过一个按照类型筛选的接口两级参数
2. 老师断线以后老师的动作先本地存储,重连以后重发
实时传输存在以下问题:
1. 聊天(chat)客户端存在断线的情况, 如何同步数据
+ 学生端断线的情况, 有两种方案:
1. 重连后收到历史命令消息(仅绘制信息).
2. 重连后请求历史绘制消息.
+ 老师端断线的情况, 数据比较难以同步.
2. 需要实时传输老师端的绘制过程,有以下两种方案。
1. 传输当前老师的画笔状态和鼠标位置, 在客户端进行重绘. (需要考虑将画笔状态、鼠标位置和时间轴分别对应起来)。
2. 传输老师绘制的图形信息(这种方案难以实时传输动态绘制情况.)
3. 命令消息如何分包, 按照2中选择方案不同, 采取按时间轴分包和按图形分包的方案.
go 接收http请求过来的ppt文件,然后经过授权验证以后保存ppt源文件到阿里云oss,同时保存ppt url在数据库里面。然后把ppt数据通过rpc的方式内网传递到java,java接收到文件以后进行ppt转图片操作。java转完以后把转好的图片转给go由go来保存图片
ppt转换目前有几种方式
1. windows平台下面:
2. linux系统下面目前发现只有java可以实现
实现方式:准备linux平台上面通过java实现,然后通过rpc方式接入直播课的go里面的http接口内
@narrow 绘制数据包需要有编号是什么意思
1. studio加一个当前有没有白板的字段.
2. 获取ppt图片时直接返回所有的图片链接.
3. 绘制数据包需要加编号
ppt转图片功能完成
开始推进这个任务