From 9223892ca50a65a671732dfd1b13343f7601f5fe Mon Sep 17 00:00:00 2001 From: sagit Date: Thu, 12 Feb 2026 04:25:36 +0000 Subject: [PATCH] fix(ws): prevent monitor websocket reconnect loop --- go-backend/internal/ws/server.go | 5 +++++ vite-frontend/nginx.conf | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/go-backend/internal/ws/server.go b/go-backend/internal/ws/server.go index f27e7bc..54edfa0 100644 --- a/go-backend/internal/ws/server.go +++ b/go-backend/internal/ws/server.go @@ -292,7 +292,9 @@ func (s *Server) SendCommand(nodeID int64, cmdType string, data interface{}, tim } ns.conn.mu.Lock() + _ = ns.conn.conn.SetWriteDeadline(time.Now().Add(wsWriteWait)) err = ns.conn.conn.WriteMessage(websocket.TextMessage, messageData) + _ = ns.conn.conn.SetWriteDeadline(time.Time{}) ns.conn.mu.Unlock() if err != nil { cleanup() @@ -429,7 +431,9 @@ func (s *Server) broadcastToAdmins(message string) { for _, c := range admins { c.mu.Lock() + _ = c.conn.SetWriteDeadline(time.Now().Add(wsWriteWait)) err := c.conn.WriteMessage(websocket.TextMessage, []byte(message)) + _ = c.conn.SetWriteDeadline(time.Time{}) c.mu.Unlock() if err != nil { log.Printf("websocket broadcast failed: %v", err) @@ -478,6 +482,7 @@ func startKeepalive(cw *connWrap, done <-chan struct{}) { cw.mu.Lock() _ = cw.conn.SetWriteDeadline(time.Now().Add(wsWriteWait)) err := cw.conn.WriteMessage(websocket.PingMessage, nil) + _ = cw.conn.SetWriteDeadline(time.Time{}) cw.mu.Unlock() if err != nil { _ = cw.conn.Close() diff --git a/vite-frontend/nginx.conf b/vite-frontend/nginx.conf index e832412..207eb04 100644 --- a/vite-frontend/nginx.conf +++ b/vite-frontend/nginx.conf @@ -87,6 +87,8 @@ http { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; + proxy_read_timeout 3600s; + proxy_send_timeout 3600s; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; @@ -94,4 +96,4 @@ http { proxy_set_header X-Forwarded-Proto $scheme; } } -} \ No newline at end of file +}