进入新房间 init() 时,先扫描 Redis 将用户从其他所有房间移除, 再写入新房间,确保每个用户同时只存在于一个房间的在线名单中。 根因:直接跳转 URL 切换房间时浏览器不触发 leave 接口, 旧房间的 Redis hash 记录永久残留,导致计数虚高。
进入新房间 init() 时,先扫描 Redis 将用户从其他所有房间移除, 再写入新房间,确保每个用户同时只存在于一个房间的在线名单中。 根因:直接跳转 URL 切换房间时浏览器不触发 leave 接口, 旧房间的 Redis hash 记录永久残留,导致计数虚高。