소스 검색

serve broadcast on new client init

reid 2 년 전
부모
커밋
5d8f54d771
1개의 변경된 파일21개의 추가작업 그리고 0개의 파일을 삭제
  1. 21 0
      broadcast/broadcast.go

+ 21 - 0
broadcast/broadcast.go

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