|
|
@@ -34,6 +34,14 @@ func init(){
|
|
|
// adds ws client
|
|
|
func RegisterClient(conn *websocket.Conn) {
|
|
|
clients[conn] = true
|
|
|
+ broadcastJson, err := GetStateJson()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if err := conn.WriteMessage(websocket.TextMessage, broadcastJson); err != nil {
|
|
|
+ fmt.Println("Error writing response:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// remove ws client
|
|
|
@@ -75,6 +83,19 @@ func GetState() structs.AuthBroadcast {
|
|
|
return broadcastState
|
|
|
}
|
|
|
|
|
|
+// return json string of current broadcast state
|
|
|
+func GetStateJson() ([]byte, error) {
|
|
|
+ mu.Lock()
|
|
|
+ defer mu.Unlock()
|
|
|
+ broadcastJson, err := json.Marshal(broadcastState)
|
|
|
+ if err != nil {
|
|
|
+ errmsg := fmt.Sprintf("Error marshalling response: %v", err)
|
|
|
+ logger.Error(errmsg)
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ return broadcastJson, nil
|
|
|
+}
|
|
|
+
|
|
|
// broadcast the global state to all clients
|
|
|
func BroadcastToClients() error {
|
|
|
broadcastJson, err := json.Marshal(broadcastState)
|