7e2ba65c54
Co-authored-by: Copilot <copilot@github.com>
1.1 KiB
1.1 KiB
DiscoveryServer
Lightweight Node.js + WebSocket server for ZAMNY co-op matchmaking.
Responsibilities:
- Player registry + nicknames (max 16 chars)
- List available players
- Room creation / joining (2-player co-op)
- Relay for initial handshake
No game logic (AD-03). All simulation runs client-side.
Quick Start
npm install
npm run dev # tsx watch, ws://localhost:3001
npm test # node:test via tsx
npm run build
npm start
WebSocket Protocol
All messages are JSON objects with type.
Client → Server
{ "type": "set_nickname", "nickname": "Player1" }{ "type": "list_players" }{ "type": "join_room", "target": "p123" }(TODO)
Server → Client
{ "type": "welcome", "id": "p1" }{ "type": "nickname_ok", "nickname": "Player1" }{ "type": "player_list", "players": [{ "id": "p2", "nickname": "ZomSlayer" }] }{ "type": "error", "message": "..." }
Notes
- Pure functions (
validateNickname,createRoomId) are unit-tested. - Server only starts when run directly (not during tests).
- Port 3001 (hardcoded for now).
- See root ARCHITECTURE.md for full design.