package websocket import "sync" type Hub struct { Rooms map[string]*Room Lock sync.RWMutex } func NewHub() *Hub { return &Hub{ Rooms: make(map[string]*Room), } } func (h *Hub) GetRoom(name string) *Room { h.Lock.Lock() defer h.Lock.Unlock() room, ok := h.Rooms[name] if !ok { room = NewRoom(name) h.Rooms[name] = room } return room }