package structs import ( "encoding/json" "errors" "sync" gocnjhelper "git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper" "github.com/gofiber/websocket/v2" ) type SocketClient struct { ClientId string Conn *websocket.Conn connMu sync.Mutex } type SocketMessage struct { Conn *websocket.Conn Msg []byte } func (socketClient *SocketClient) SendMessage(message []gocnjhelper.RabbitMqLogMessage) error { var marshaledMessage []byte var err error marshaledMessage, err = json.Marshal(message) if err != nil { gocnjhelper.LogErrorf("Failed to marshal ws message, err: %s", err) return err } socketClient.connMu.Lock() defer socketClient.connMu.Unlock() if socketClient.Conn == nil { gocnjhelper.LogError("Failed to ws message because conn is nil") return errors.New("ws client conn is nil") } err = socketClient.Conn.WriteMessage(websocket.TextMessage, marshaledMessage) if err != nil { gocnjhelper.LogErrorf("Failed to write ws message, err: %s", err) return err } return nil }