From 8c6bf0526998e8fb79f007ffb09195615bd2b0b1 Mon Sep 17 00:00:00 2001 From: Riz Ashraf Date: Thu, 8 Oct 2026 12:46:55 +0100 Subject: [PATCH] feat: implement native UDP ping/pong health check pattern --- server/src/lib.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/server/src/lib.rs b/server/src/lib.rs index ee91dc9..88f4cad 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -368,11 +368,13 @@ pub async fn run_server(state: Arc) -> Result<(), Box(&buf[..len]) { - if gate_wait.get("type").and_then(|t| t.as_str()) == Some("gate_wait") { + } else if let Ok(json_payload) = serde_json::from_slice::(&buf[..len]) { + if json_payload.get("type").and_then(|t| t.as_str()) == Some("ping") { + let _ = socket.send_to(b"pong", addr).await; + } else if json_payload.get("type").and_then(|t| t.as_str()) == Some("gate_wait") { if let (Some(action), Some(target)) = ( - gate_wait.get("action").and_then(|a| a.as_str()), - gate_wait.get("target").and_then(|t| t.as_str()) + json_payload.get("action").and_then(|a| a.as_str()), + json_payload.get("target").and_then(|t| t.as_str()) ) { subscribers.insert((action.to_string(), target.to_string()), addr); }