From bb1e412d36a00f1f74251fbefb3cb11c14cb6f95 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Tue, 11 Feb 2025 22:03:16 +0100 Subject: [PATCH] Implement disconnect specific client ID --- src/server/api/ws.rs | 11 ++++++++++- src/server/web_ui.rs | 5 ++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/server/api/ws.rs b/src/server/api/ws.rs index 8b2b86b..b8fde4d 100644 --- a/src/server/api/ws.rs +++ b/src/server/api/ws.rs @@ -64,7 +64,16 @@ pub async fn ws_handler( }; match msg { - WsMessage::CloseClientSession(_) => todo!(), + WsMessage::CloseClientSession(id) => { + if let Some(client) = &auth.client { + if client.id == id { + log::info!( + "closing client session {id:?} of user {:?} as requested", auth.user.user_id + ); + break None; + } + } + }, WsMessage::CloseAllUserSessions(userid) => { if userid == auth.user.user_id { log::info!( diff --git a/src/server/web_ui.rs b/src/server/web_ui.rs index cb6bbf3..83288d8 100644 --- a/src/server/web_ui.rs +++ b/src/server/web_ui.rs @@ -138,7 +138,10 @@ pub async fn home( config.clients.retain(|c| c.id != delete_client_id); config.save().await?; success_message = Some("The client was successfully deleted!".to_string()); - // TODO : close connections with given id + + if let Err(e) = tx.send(WsMessage::CloseClientSession(delete_client_id)) { + log::error!("Failed to send CloseClientSession: {}", e); + } } }