package util import ( "app.yhyue.com/moapp/jybase/go-logger/logger" "app.yhyue.com/moapp/message/model" "encoding/json" "sync" ) type Broadcast struct { Clients map[chan string]struct{} Mu sync.Mutex } var ( SseBroadcast = &Broadcast{ Clients: make(map[chan string]struct{}), } ) // SendToUsers 消息通知 func (s *Broadcast) SendToUsers(msg model.SseMessage) { s.Mu.Lock() defer s.Mu.Unlock() msgData, _ := json.Marshal(msg) for clientChan := range s.Clients { select { case clientChan <- string(msgData): logger.Info("send to all user, msg:", msg) default: logger.Info("Client channel full, skipping") } } }