From 7a5f4c0564e8bbf191d0323a8dc20c09c9f3f3bb Mon Sep 17 00:00:00 2001 From: cynfo3000 Date: Tue, 10 Mar 2026 02:42:34 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20WS-Client=20Ping-Loop=20(30s)=20?= =?UTF-8?q?=E2=80=94=20Verbindung=20bricht=20nicht=20mehr=20nach=2070s=20a?= =?UTF-8?q?b?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- agent-windows/ws/client.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/agent-windows/ws/client.go b/agent-windows/ws/client.go index b0ce82c..a316249 100644 --- a/agent-windows/ws/client.go +++ b/agent-windows/ws/client.go @@ -95,6 +95,26 @@ func (c *Client) connect(stop <-chan struct{}) error { }) 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() { defer close(done) for { @@ -106,6 +126,7 @@ func (c *Client) connect(stop <-chan struct{}) error { return } if resp := c.handler.Handle(msg); resp != nil { + conn.SetWriteDeadline(time.Now().Add(10 * time.Second)) conn.WriteMessage(websocket.TextMessage, resp) } }