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) } }