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() {