From 6feda0632367deaa9caf193e89b74f7affd45021 Mon Sep 17 00:00:00 2001 From: Bernhard Guillon Date: Tue, 7 Jul 2026 14:33:57 +0200 Subject: Add heartbeat ping/pong to detect disconnects Windows client sends ping every 10s. Linux server responds with pong. If write fails, client detects disconnect and reconnects. --- cmd_windows.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'cmd_windows.go') diff --git a/cmd_windows.go b/cmd_windows.go index 4d7df37..da26684 100644 --- a/cmd_windows.go +++ b/cmd_windows.go @@ -93,6 +93,27 @@ func run() { logInfo("watcher: monitoring for changes ...") + // Heartbeat goroutine to detect disconnects + go func() { + ticker := time.NewTicker(10 * time.Second) + defer ticker.Stop() + for { + select { + case <-ctx.Done(): + return + case <-ticker.C: + msg := &ProtocolMessage{Type: "ping"} + data, _ := EncodeMessage(msg) + data = append(data, '\n') + if _, err := conn.Write(data); err != nil { + logErrorf("heartbeat failed: %v", err) + conn.Close() + return + } + } + } + }() + if !watchLoop(ctx, conn, watcher, manifest, stack) { conn.Close() continue -- cgit v1.2.3