项目纪实-一起观影
功能需求
- CP/守护可以邀请对方一起观影
- 双方进度同步(网络情况等其他因素会导致延迟过大)、设置同步(倍速、更换视频)
功能流程
流程图

流程说明
- 用户邀请CP或者守护一起观影,发送一对一消息给对方;
- 对方收到消息可以选择同意和拒绝,拒绝后被邀请方不进入观影界面,同意后被邀请方进入观影界面;
- 双方在观影界面可以选择视频App来选择影片进行投屏观看;
- 双方在观看时,可以调整进度、播放速度、更换视频操作,这些操作会同步给对方;
- 一方在观影中退出会提示对方;
- 双方都退出了观影,整个观影结束。
设计
设计模型

代码设计

简要说明
- 使用网易云信IM信息服务同步双方状态
- 将双方客户端一起观影状态抽象成会话
session状态,会话状态通过心跳机制维持; - 心跳检测机制:客户端通过/allconfig接口获取到心跳频率,服务端每15秒扫描一次客户端存活表(心跳记录表),如果1分钟没有收到客户端心跳,则执行客户端退出逻辑;
- 心跳表(watch_heart_beat_info)设计成一个观影ID(watchId)同时对应两行(两个客户端)数据,防止更新数据出现锁竞争的情况,降低延迟,增加响应速度;
- 同步进度的补偿算法:(当前系统的时间戳 - 最近心态包发送到服务器的时间戳) + 最近心跳包中播放的进度 + 866
- 标题: 项目纪实-一起观影
- 作者: Heer Liu
- 创建于: 2022-09-12 20:15:10
- 链接: https://blog.heer.love/posts/f3a92809/
- 版权声明 : 本文章采用 CC BY-NC-SA 4.0 进行许可。