项目纪实-一起观影

Heer Liu

功能需求

  1. CP/守护可以邀请对方一起观影
  2. 双方进度同步(网络情况等其他因素会导致延迟过大)、设置同步(倍速、更换视频)

功能流程

流程图

img

流程说明

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

设计

设计模型

img

代码设计

img

简要说明

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