ManagementSystem/modules/structs/socketclient.go

51 lines
1.0 KiB
Go

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
}