V3.05.4Automatic control reclaim on disconnect设计

持有者掉线时需有自动回收控制权的规则

别名: 掉线回收 · 控制权自动回收 · 断线释放

概念解释

控制权的持有者掉线(网络断开、客户端崩溃、直接离开)时,控制席位不能跟着他一起消失——必须有一条自动回收规则在检测到掉线后把控制权收回到可分配状态。没有这条规则,单人操作位会被一个不在场的人无限期占据:其他人看得见对象却动不了,整个共享活动卡死在一个幽灵持有者手里。掉线回收与内容锁的超时释放同构(都是「持有者缺席时排他性必须自动解除」),但作用对象不同:一个保住编辑权,一个保住操作权。

机制

掉线检测存在判定延迟:网络层无法瞬间区分「掉线」与「网络抖动」,只能靠超时(若干秒无心跳判死)。这决定了回收规则必然在两种错误之间取平衡——等太短,一次抖动就把正在操作的人踢下席位(误杀);等太长,掉线期间操作位空转,全组干等(漏杀)。规则设计因此要指明三件事:判定信号(心跳/会话层保活,而非应用层输入——人可能只是暂停操作而非离线)、回收去向(回到主持人、回到池中待申请、还是自动给下一个排队者——不同去向改变权力结构)、回归处理(原持有者重连后是自动恢复还是重新排队——自动恢复对抖动友好,重新排队防反复抖动折磨他人)。掉线瞬间被操作对象的状态也需要交代:进行到一半的输入或指令如何标记,接手者需要看到「最后一次有效操作停在哪」。

边界

自动回收只应针对非自愿离线。持有者主动退出(正常关闭、显式离开)应立即释放,走正常交接流程,不需要等超时。回收规则也无法处理「人在但不操作」的情形——那属于闲置持有,需要的是闲置超时而非掉线检测,两者判定信号不同(前者看输入活动,后者看连接存活),混用会把长时间思考的操作者误判为掉线。多席位场景(几人分持不同对象的控制权)里,回收要按席位独立进行,一次网络分区不能触发全局席位清空。

怎么落地

  • 用会话层心跳做掉线判定,超时阈值按网络环境配置(消费级网络给到 30–60 秒量级),并区分「主动退出立即释放」与「掉线超时回收」两条路径。
  • 明确回收去向并告知全组:席位回到主持人还是公共池,界面即时更新持有人显示为「待分配」。
  • 原持有者重连时给出选择:恢复席位(无人接手时)或排队(已被接手时),并显示掉线期间发生了什么。
  • 接手者界面标记「上一持有者最后有效操作的位置与时间」。
  • 验证:模拟三类中断——网线拔出、客户端崩溃、仅切后台不操作——检查只有前两类触发回收、第三类不触发;再验证重连恢复路径与掉线期间的操作标记是否完整。

延伸

  • 同组V3.05.1 同一时刻只允许一人操作的场景需要明确的控制权归属 · V3.05.2 控制权交接需要请求与授予两个独立动作 · V3.05.3 当前由谁持有控制权必须持续可见 · V3.05.5 强制夺取控制权需留下可追溯的记录
  • 相邻V3.03.2 遗忘释放的锁会阻塞他人 · V3.03.3 锁需要超时与强制释放
  • 站内检索disconnect recovery · floor reclaim · session timeout · presence heartbeat

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/V3.05.4