Skip to main content
Version: Current

Backend 设计

路由挂载 (index.ts)

GET  /health
POST /api/submit-answer/*
POST /api/admin/*
POST /api/auth/verify-code

admin.ts

  • requireAdmin() — JWT + isAdmin + !isDisplay
  • publish-login-codepublishLoginCode()
  • close-login-codeclearLoginCode()
  • reset-gamegameManager.resetGame()

auth.ts

  • 校验 UUID + 6 位码
  • validateLoginCodeassignPlayerIdentity
  • 返回 internalEmail / displayName 供 NextAuth

game.ts 要点

endGame

emit('winner', { winnerEmail, winnerDisplay });
emit('tie', { finalists, finalistsDisplay });
await saveGameResult(...);

resetGame

await clearLoginCode();
await clearPlayerRegistry();
// + 原有 Redis 清理、SCAN 答案 key

socket.ts 要点

  • Display 连接:emitLoginCodeStatus(socket.id)
  • winner/tie 重连补发含 display 字段

性能

  • mGet 批量查答案
  • SCAN 清理 reset
  • sAddInBatches 恢复 survivors(500/批)

扩展点

需求位置
登录码 TTLlogin-code.ts SET EX
多房间room.ts + keys
美区 OAuth 恢复取消 login/page.tsx 注释