JooLun Plus 百科 ⬇ 源码下载

04.20 分布式直播 WebSocket 测试验证清单

102353 于 2026-10-17 14:14:33 +08:00 修改了此页面

分布式直播 WebSocket 测试验证清单

1. 测试目标

验证直播 WebSocket 在多节点部署场景下,用户端、主播端、在线态、广播、踢线、房间下线、商品讲解状态、房间状态是否保持一致。

2. 测试环境建议

  • 至少 2 个 joolun-live-admin 实例
  • 所有实例共享同一个 Redis
  • 所有实例共享同一个数据库
  • 网关或负载均衡可将不同连接分发到不同实例

建议标记为:

  • 节点 A
  • 节点 B

3. 构建检查

执行以下命令确认工程可正常编译:

mvn -pl joolun-live/joolun-live-admin -am -DskipTests package

预期结果:

BUILD SUCCESS

4. 基础可用性验证

4.1 单节点基础能力

  • 主播连接成功
  • 用户连接成功
  • 弹幕发送正常
  • 房间上下线正常
  • 商品讲解状态变更正常

4.2 双节点同时在线

  • 主播连接到节点 A
  • 用户 1 连接到节点 A
  • 用户 2 连接到节点 B
  • 确认两个节点都能正常收发消息

预期结果:

  • 不同节点上的连接都能进入同一房间
  • 房间消息和状态更新对两个节点均可见

5. 在线态验证

5.1 房间在线人数

  • 用户 1 在节点 A 进入房间
  • 用户 2 在节点 B 进入房间

预期结果:

  • 房间在线人数显示为 2
  • 两个节点看到的人数一致
  • Redis 房间用户集合成员数正确

5.2 全局连接数限制

  • 分别向不同节点持续建立用户连接
  • 观察是否命中全局连接限制

预期结果:

  • 超出上限后的新连接被拒绝
  • 限流依据是全局总量,不是单节点局部数量

6. 跨节点广播验证

6.1 用户弹幕广播

  • 用户 A 在节点 A 发送弹幕
  • 用户 B 在节点 B 观察是否收到
  • 主播端观察是否收到

预期结果:

  • 同一房间所有在线用户和主播都能收到消息

6.2 主播消息广播

  • 主播在任一节点发送房间消息、讲解消息或状态消息
  • 观察另一节点用户是否收到

预期结果:

  • 两个节点上的消息表现一致

7. 跨节点踢线验证

7.1 用户重复登录

  • 同一个用户先连接节点 A
  • 再使用同一账号连接节点 B

预期结果:

  • 节点 A 上旧连接被踢下线
  • 节点 B 上新连接保留
  • Redis 中仅保留新连接信息

7.2 主播重复登录

  • 主播先连接节点 A
  • 主播再次连接节点 B

预期结果:

  • 节点 A 上旧主播连接被踢下线
  • 节点 B 上新主播连接接管成功

8. 房间状态验证

8.1 开播状态

  • 主播在任一节点建立连接并满足开播条件

预期结果:

  • 房间状态切换为 LIVING
  • Redis 房间状态被同步更新

8.2 停播状态

  • 直播间处于直播中
  • 所有主播连接断开

预期结果:

  • 房间状态切换为 STOP
  • 不同节点看到的状态一致

8.3 结束状态

  • 模拟直播结束时间已到或后台结束直播

预期结果:

  • 房间状态切换为 FINISHED
  • 后续新主播连接被拒绝

9. 房间下线验证

9.1 管理端强制下线

  • 房间用户分布在节点 A 和节点 B
  • 主播也处于在线状态
  • 调用 /liveroom/offline

预期结果:

  • 所有用户和主播都收到房间下线消息
  • 两个节点上的本地连接全部被清理
  • Redis 在线态被同步清理

10. 商品讲解状态验证

10.1 跨节点讲解同步

  • 主播在节点 A 开启某商品讲解
  • 节点 B 用户观察讲解状态

预期结果:

  • 节点 B 立即看到讲解状态变化
  • Redis 讲解状态 Key 被同步更新

10.2 重复讲解指令去重

  • 连续两次发送相同讲解状态指令

预期结果:

  • 第二次不会产生无意义重复更新

11. 异常场景验证

11.1 节点异常重启

  • 用户和主播分别连接在不同节点
  • 重启其中一个节点

预期结果:

  • 失效节点相关连接在超时后从 Redis 清理
  • 其他节点连接不受影响

11.2 Redis 残留脏数据

  • 人工制造过期或失效连接 Key

预期结果:

  • 在线人数统计时可自动剔除失效成员
  • 不会因为脏数据导致全局人数长期失真

12. 观测项

测试时建议同时观察以下内容:

  • 应用日志
  • Redis Key 变化
  • 数据库直播间状态字段
  • 前端连接状态
  • 房间在线人数显示