27 lines
356 B
Go
27 lines
356 B
Go
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
|
|
}
|