rooms.go 540 B

12345678910111213141516171819202122232425
  1. package main
  2. import "github.com/dustin/go-broadcast"
  3. var roomChannels = make(map[string]broadcast.Broadcaster)
  4. func openListener(roomid string) chan interface{} {
  5. listener := make(chan interface{})
  6. room(roomid).Register(listener)
  7. return listener
  8. }
  9. func closeListener(roomid string, listener chan interface{}) {
  10. room(roomid).Unregister(listener)
  11. close(listener)
  12. }
  13. func room(roomid string) broadcast.Broadcaster {
  14. b, ok := roomChannels[roomid]
  15. if !ok {
  16. b = broadcast.NewBroadcaster(10)
  17. roomChannels[roomid] = b
  18. }
  19. return b
  20. }