Explorar o código

fix broadcast

reid %!s(int64=2) %!d(string=hai) anos
pai
achega
29ad672a9f
Modificáronse 2 ficheiros con 9 adicións e 5 borrados
  1. 6 4
      broadcast/broadcast.go
  2. 3 1
      ws/ws.go

+ 6 - 4
broadcast/broadcast.go

@@ -7,6 +7,7 @@ import (
 	"os"
 	"reflect"
 	"sync"
+	"fmt"
 
 	"github.com/gorilla/websocket"
 )
@@ -50,7 +51,7 @@ func UpdateStateWithMap(values map[string]interface{}) error {
 		}
 		field.Set(val)
 	}
-	broadcastToClients()
+	BroadcastToClients()
 	return nil
 }
 
@@ -62,16 +63,17 @@ func GetState() structs.AuthBroadcast {
 }
 
 // broadcast the global state to all clients
-func broadcastToClients() {
+func BroadcastToClients() error {
 	broadcastJson, err := json.Marshal(broadcastState)
 	if err != nil {
 		logger.Error("Error marshalling response:", err)
-		return
+		return err
 	}
 	for client := range clients {
 		if err := client.WriteMessage(websocket.TextMessage, broadcastJson); err != nil {
 			logger.Error("Error writing response:", err)
-			return
+			return err
 		}
 	}
+	return nil
 }

+ 3 - 1
ws/ws.go

@@ -77,7 +77,9 @@ func WsHandler(w http.ResponseWriter, r *http.Request) {
 		case "support":
 			logger.Info("Support")
 		case "broadcast":
-			broadcast.broadcastToClients()
+			if err := broadcast.BroadcastToClients(); err != nil {
+				logger.Error("Unable to broadcast")
+			}
 		default:
 			errmsg := fmt.Sprintf("Unknown request type:", payload.Type)
 			logger.Warn(errmsg)