Fix broadcast

This commit is contained in:
2024-06-20 17:46:43 +02:00
parent 0174f3d9b9
commit b6e7040662

View File

@@ -14,6 +14,7 @@ import (
var upgrader = websocket.Upgrader{} var upgrader = websocket.Upgrader{}
var wsBroadcast = make(chan string, 128) var wsBroadcast = make(chan string, 128)
var connections = make(map[*WSConnection]bool)
const TIMEOUT = 6 const TIMEOUT = 6
const IDLE_TIMEOUT = TIMEOUT * time.Second const IDLE_TIMEOUT = TIMEOUT * time.Second
@@ -91,6 +92,8 @@ func (ws *WSConnection) Open() {
return nil return nil
}) })
connections[ws] = true
go ws.messageReader() go ws.messageReader()
go ws.messageSender() go ws.messageSender()
go ws.pinger() go ws.pinger()
@@ -100,9 +103,10 @@ func (ws *WSConnection) Open() {
case err := <-ws.ErrorChan: case err := <-ws.ErrorChan:
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
ws.conn.Close() ws.conn.Close()
connections[ws] = false
return return
case msg := <-wsBroadcast: // case msg := <-wsBroadcast:
ws.WriteChan <- msg // 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)) 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() { func main() {