Critical:学生排队断线分支补归属+状态校验,避免同账号双标签页 把 active 请求错删、被另一个学生请求顶替后又被别的老师抢建出 第二间房;handleAccept 补 getRoom(studentId) 兜底同一学生 id 下已有房间的情况。 Important:handleAccept 的库查询是个 await 点,之后补上 teacherSockets().has(ws) 判活,教师在等待期间断线不会再对着 死 socket 建房间。 Minor:handleReject 补上和 handleAccept 一致的库复核,堵住 连接存活期间被降级/禁用的教师继续掐请求的口子; handleCollabBinary 检查 peer.send() 返回值,转发失败时走既有 teardownRoom 拆房间,不再静默丢帧、悄悄分叉两边的代码。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1d8B3f4SXJwDvUY625eQd