rooms.go 667 B

123456789101112131415161718192021222324252627282930313233
  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 deleteBroadcast(roomid string) {
  14. b, ok := roomChannels[roomid]
  15. if ok {
  16. b.Close()
  17. delete(roomChannels, roomid)
  18. }
  19. }
  20. func room(roomid string) broadcast.Broadcaster {
  21. b, ok := roomChannels[roomid]
  22. if !ok {
  23. b = broadcast.NewBroadcaster(10)
  24. roomChannels[roomid] = b
  25. }
  26. return b
  27. }