From b6e70406628ac4c2d8c55f09e14a6b05c204aba7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Thu, 20 Jun 2024 17:46:43 +0200 Subject: [PATCH] Fix broadcast --- ws-server/main.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/ws-server/main.go b/ws-server/main.go index d9a3c9b..b1e0d86 100644 --- a/ws-server/main.go +++ b/ws-server/main.go @@ -14,6 +14,7 @@ import ( var upgrader = websocket.Upgrader{} var wsBroadcast = make(chan string, 128) +var connections = make(map[*WSConnection]bool) const TIMEOUT = 6 const IDLE_TIMEOUT = TIMEOUT * time.Second @@ -91,6 +92,8 @@ func (ws *WSConnection) Open() { return nil }) + connections[ws] = true + go ws.messageReader() go ws.messageSender() go ws.pinger() @@ -100,9 +103,10 @@ func (ws *WSConnection) Open() { case err := <-ws.ErrorChan: log.Printf("Error: %v", err) ws.conn.Close() + connections[ws] = false return - case msg := <-wsBroadcast: - ws.WriteChan <- msg + // case msg := <-wsBroadcast: + // ws.WriteChan <- msg } } }() @@ -142,7 +146,12 @@ func handleDownload(responseWriter http.ResponseWriter, request *http.Request) { } log.Printf("Received download request: %s, %d in channel", req.Link, len(wsBroadcast)) - wsBroadcast <- req.Link + go func() { + for ws := range connections { + ws.WriteChan <- req.Link + } + }() + // wsBroadcast <- req.Link } func main() {