ManagementSystem/socketserver/hub.go

45 lines
1.2 KiB
Go

package socketserver
import (
"clickandjoin.app/managementsystem/modules/cache"
"clickandjoin.app/managementsystem/modules/structs"
"clickandjoin.app/managementsystem/socketclients"
gocnjhelper "git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper"
"github.com/gofiber/websocket/v2"
"github.com/google/uuid"
)
var register = make(chan *structs.SocketClient)
var broadcast = make(chan structs.SocketMessage)
var unregister = make(chan *websocket.Conn)
func RunHub() {
for {
select {
case newSocketClient := <-register:
newSocketClient.ClientId = uuid.New().String()
gocnjhelper.LogDebugf("clients: %d %s", len(cache.GetSocketClients()), cache.GetSocketClients())
gocnjhelper.LogDebugf("REGISTER CLIENT: %s", newSocketClient.ClientId)
cache.AddSocketClient(newSocketClient.ClientId, newSocketClient)
socketclients.BroadcastViewersCountMessage(1)
case data := <-broadcast:
gocnjhelper.LogDebugf("RECEIVED WEBSOCKET MESSAGE: %s", data.Msg)
case connection := <-unregister:
for id, client := range cache.GetSocketClients() {
if connection == client.Conn {
gocnjhelper.LogDebugf("UNREGISTER CLIENT: %s", id)
cache.DeleteClient(id)
socketclients.BroadcastViewersCountMessage(0)
}
}
}
}
}