Ma Sói Reconnect QA
Workflow
- Read
server/index.jshandlers:auth,join_room,disconnect,leave_room,play_again,handleLeave. - Read Redis helpers in
server/db/redis.js: socket-user mapping and user-room mapping. - Read client boot/resume logic in
client/src/App.jsx,client/src/hooks/useSocket.jsx, andclient/src/hooks/useGame.js. - Check behavior against
references/reconnect-checklist.md. - For code changes, verify:
node --check server/index.jscd client && npm run buildif client changed.
Required Resume Payloads
On reconnect after auth, server should restore:
room_joinedwith sanitized room.role_assignedif game already started.phase_changedwith remaining time.- Special state where relevant, such as
wolf_target_updatedandnight_resolved. - Online/offline indicators to other players.
Failure Signals
- User sees lobby while still mapped to a room.
- User cannot create/join because stale
user:{id}:roompoints to missing Redis room. - Refresh during night loses role, timer, target, or special prompt.
- Host play-again clears result on one client before server resets room.
References
Load references/reconnect-checklist.md when testing or reviewing reconnect behavior.