Files
shagram/internal/websocket/hub.go
T
2026-01-13 01:07:56 +03:00

34 lines
563 B
Go

package websocket
type Hub struct {
rooms map[string]*Room
}
func NewHub() *Hub {
return &Hub{
rooms: make(map[string]*Room),
}
}
func (h *Hub) GetOrCreateRoom(roomID string) *Room {
if _, ok := h.rooms[roomID]; !ok {
h.rooms[roomID] = NewRoom(roomID)
}
return h.rooms[roomID]
}
func (h *Hub) CleanupRoom(roomID string) {
room := h.rooms[roomID]
if len(room.clients) == 0 {
delete(h.rooms, roomID)
}
}
func (h *Hub) Rooms() []string {
ids := make([]string, 0, len(h.rooms))
for id := range h.rooms {
ids = append(ids, id)
}
return ids
}