12345678910111213141516171819202122232425262728293031323334 |
- 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")
- }
- }
- }
|