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