package socketserver import ( "encoding/json" "fmt" "janex/admin-dashboard-backend/modules/cache" "janex/admin-dashboard-backend/modules/structs" "janex/admin-dashboard-backend/socketclients" "github.com/gofiber/websocket/v2" "github.com/rs/zerolog/log" ) 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: userId := fmt.Sprintf("%v", newSocketClient.Conn.Locals("userId")) sessionId := fmt.Sprintf("%v", newSocketClient.Conn.Locals("sessionId")) newSocketClient.SessionId = sessionId newSocketClient.UserId = userId cache.AddSocketClient(sessionId, newSocketClient) log.Debug().Msgf("clients: %d", len(cache.GetSocketClients())) log.Debug().Msgf("REGISTER CLIENT: %s", sessionId) socketclients.UpdateConnectedUsers() case data := <-broadcast: var receivedMessage structs.ReceivedMessage if err := json.Unmarshal(data.Msg, &receivedMessage); err != nil { log.Error().Msgf("Failed to unmarshal received msg, err: %s", err) continue } log.Info().Msgf("Received message: %s", receivedMessage) case connection := <-unregister: cache.DeleteClientByConn(connection) socketclients.UpdateConnectedUsers() } } }