Etapa 2 Backend Wiring: WS → Engine

GameManager integrado como puente entre WebSocket y motor de juego. Redis para persistencia de partidas activas y gRPC handlers reales para consultas entre servicios.

✓ Estado: Completado

9 packages build vet tests pasando

go build ./services/domino-service/... + go vet + go test — ALL CLEAN.

GameManager

Nuevo en internal/ws/game_manager.go. Gestiona ciclo de vida completo:

WebSocket Handlers

Mensajes WS enrutados a GameManager en internal/ws/messages.go:

Redis Persistence

Nuevo internal/ws/redis_store.go:

gRPC Handlers Reales

Implementados en internal/server/grpc.go mediante proto proto/domino/domino.proto:

DB Persistence

Testing

Archivos Nuevos/Modificados

NUEVOS:
  internal/ws/game_manager.go      — Bridge WS → Engine + bot orquestación
  internal/ws/game_manager_test.go — E2E bot vs bot tests
  internal/ws/redis_store.go        — Redis save/load/delete
  proto/domino/domino.proto         — Proto definición servicio gRPC
  proto/gen/domino/                 — Go stubs generados

MODIFICADOS:
  internal/ws/messages.go           — play_tile, pass_turn, buy_tile handlers
  internal/ws/connect.go           — HubHandler con GameManager
  internal/ws/hub.go               — Client.Username
  internal/ws/hub_test.go          — Constructor actualizado
  internal/ws/ws_test.go           — Constructor actualizado
  internal/ws/ws_integration_test.go — Constructor actualizado
  internal/server/grpc.go          — Implementación DominoServiceServer
  internal/api/router.go           — gameManager injectado
  internal/api/handlers.go         — handleCreateGame llama gm.CreateGame()
  cmd/server/main.go               — Wire Redis, GameManager, gRPC state
← Volver a d.bakuryu.com