move check for unresponsive clients to additional loops

This commit is contained in:
Sebastian Mark 2024-11-20 20:18:41 +01:00
parent 9fa740b2c6
commit 2ddc1ef9e4

View file

@ -22,17 +22,19 @@ func SendPermanentBroadCastMessage() {
// Iterate over all connected clients and broadcast the message // Iterate over all connected clients and broadcast the message
for _, client := range Clients { for _, client := range Clients {
if time.Now().Sub(client.LastPong) > 10*time.Second {
// Remove unresponsive client
client.Conn.Close()
delete(Clients, client.Conn.LocalAddr())
helper.Logger.Info("Client timed out", "host", client.RealIP, "clients", len(Clients))
}
err := client.SendMessage(websocket.TextMessage, jsonMessage) err := client.SendMessage(websocket.TextMessage, jsonMessage)
if err != nil { if err != nil {
helper.Logger.Info("Error broadcasting to client:", "msg", err, "host", client.RealIP, "clients", len(Clients)) helper.Logger.Info("Error broadcasting to client:", "msg", err, "host", client.RealIP, "clients", len(Clients))
} }
} }
for _, client := range Clients {
if time.Now().Sub(client.LastPong) > (10 * time.Second) {
// Remove unresponsive client
client.Conn.Close()
delete(Clients, client.Conn.LocalAddr())
helper.Logger.Info("Client timed out", "host", client.RealIP, "clients", len(Clients))
}
}
<-tick.C <-tick.C
} }
} }