Fix broadcast
This commit is contained in:
@@ -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() {
|
||||||
|
Reference in New Issue
Block a user