From bc192bdf6b911134974d177da07488be3e9d290d Mon Sep 17 00:00:00 2001 From: Ferdinand Schober Date: Tue, 10 Sep 2024 11:46:26 +0200 Subject: [PATCH] ping server --- src/connect.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/connect.rs b/src/connect.rs index 5572b2f..cc4db3f 100644 --- a/src/connect.rs +++ b/src/connect.rs @@ -7,6 +7,7 @@ use std::{ net::SocketAddr, rc::Rc, sync::Arc, + time::Duration, }; use thiserror::Error; use tokio::{ @@ -130,8 +131,18 @@ impl LanMouseConnection { }; log::info!("client ({handle}) connected @ {addr}"); server.set_active_addr(handle, Some(addr)); - conns.lock().await.insert(addr, conn); + conns.lock().await.insert(addr, conn.clone()); connecting.lock().await.remove(&handle); + spawn_local(async move { + loop { + let (buf, len) = ProtoEvent::Ping.into(); + if let Err(e) = conn.send(&buf[..len]).await { + log::warn!("client ({handle}) @ {addr} connection closed: {e}"); + conns.lock().await.remove(&addr); + } + tokio::time::sleep(Duration::from_millis(500)).await; + } + }); } Result::<(), LanMouseConnectionError>::Ok(()) });