fix: WS-Client Ping-Loop (30s) — Verbindung bricht nicht mehr nach 70s ab

This commit is contained in:
cynfo3000 2026-03-10 02:42:34 +01:00
parent ef567874c6
commit 7a5f4c0564

View File

@ -95,6 +95,26 @@ func (c *Client) connect(stop <-chan struct{}) error {
}) })
done := make(chan struct{}) done := make(chan struct{})
// Ping-Loop: alle 30s einen Ping senden um Verbindung am Leben zu halten
go func() {
ticker := time.NewTicker(30 * time.Second)
defer ticker.Stop()
for {
select {
case <-ticker.C:
conn.SetWriteDeadline(time.Now().Add(10 * time.Second))
if err := conn.WriteMessage(websocket.PingMessage, nil); err != nil {
return
}
case <-done:
return
case <-stop:
return
}
}
}()
go func() { go func() {
defer close(done) defer close(done)
for { for {
@ -106,6 +126,7 @@ func (c *Client) connect(stop <-chan struct{}) error {
return return
} }
if resp := c.handler.Handle(msg); resp != nil { if resp := c.handler.Handle(msg); resp != nil {
conn.SetWriteDeadline(time.Now().Add(10 * time.Second))
conn.WriteMessage(websocket.TextMessage, resp) conn.WriteMessage(websocket.TextMessage, resp)
} }
} }