Documentation
¶
Overview ¶
Paquete websocket: módulo que gestiona las conexiones WebSocket activas. El Hub es el "registro central" de clientes conectados — equivalente al Gateway de NestJS con @WebSocketGateway pero sin decoradores, todo explÃcito.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Client ¶
type Client struct {
ID string // UUID único asignado al conectarse
Conn *websocket.Conn // La conexión WebSocket real (leer/escribir mensajes)
}
Client representa una conexión WebSocket activa. Cada cliente que se conecta a /ws crea una instancia de esta struct.
type Hub ¶
type Hub struct {
// contains filtered or unexported fields
}
Hub mantiene el mapa de todos los clientes conectados. Es un singleton: se crea una vez en main.go y se pasa a las rutas.
¿Por qué RWMutex en vez de Mutex?
- RLock/RUnlock: múltiples goroutines pueden leer el mapa al mismo tiempo.
- Lock/Unlock: solo una goroutine puede escribir (conectar/desconectar).
Esto evita bloqueos innecesarios cuando solo se está leyendo (ej: broadcast).
func NewHub ¶
NewHub crea e inicializa el Hub. Se llama desde main.go. El map vacÃo se crea aquà para que nunca sea nil.
func (*Hub) Broadcast ¶
Broadcast envÃa un mensaje a todos los clientes conectados EXCEPTO al emisor. Usa RLock() (lectura compartida) porque solo recorre el mapa sin modificarlo.
func (*Hub) Count ¶
Count devuelve el número de clientes conectados actualmente. Útil para logs y para el endpoint /health si queremos incluirlo.
func (*Hub) Register ¶
Register añade un cliente al mapa cuando se conecta. Usa Lock() (escritura exclusiva) porque modifica el mapa.
func (*Hub) Unregister ¶
Unregister elimina un cliente del mapa cuando se desconecta. También usa Lock() porque modifica el mapa.