12345678910111213141516171819202122232425262728293031323334 |
- package notification
- import (
- "sync"
- "github.com/0xJacky/Nginx-UI/model"
- "github.com/gin-gonic/gin"
- )
- var (
- clientMap = make(map[*gin.Context]chan *model.Notification)
- mutex = &sync.RWMutex{}
- )
- func SetClient(c *gin.Context, evtChan chan *model.Notification) {
- mutex.Lock()
- defer mutex.Unlock()
- clientMap[c] = evtChan
- }
- func RemoveClient(c *gin.Context) {
- mutex.Lock()
- defer mutex.Unlock()
- close(clientMap[c])
- delete(clientMap, c)
- }
- func broadcast(data *model.Notification) {
- mutex.RLock()
- defer mutex.RUnlock()
- for _, evtChan := range clientMap {
- evtChan <- data
- }
- }
|