From 4c170c3ab5991ccab20968f016b4630f623e0e62 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Thu, 18 Apr 2024 17:53:46 +0200 Subject: [PATCH] Use the same close logic everywhere --- ewebsock/src/web.rs | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/ewebsock/src/web.rs b/ewebsock/src/web.rs index e8065c2..8ea356a 100644 --- a/ewebsock/src/web.rs +++ b/ewebsock/src/web.rs @@ -57,11 +57,9 @@ impl WsSender { /// This should never fail, except _maybe_ on Web. pub fn close(&mut self) -> Result<()> { if let Some(socket) = self.socket.take() { - log::debug!("Closing WebSocket"); - socket.close().map_err(string_from_js_value) - } else { - Ok(()) + close_socket(&socket); } + Ok(()) } /// Forget about this sender without closing the connection. @@ -123,11 +121,7 @@ pub(crate) fn ws_connect_impl( ))), }; if control.is_break() { - if let Err(err) = socket3.close() { - log::warn!("Failed to close WebSocket: {err:?}"); - } else { - log::debug!("Closed WebSocket"); - } + close_socket(&socket3); } }) as Box); @@ -148,11 +142,7 @@ pub(crate) fn ws_connect_impl( )))) }; if control.is_break() { - if let Err(err) = socket2.close() { - log::warn!("Failed to close WebSocket: {err:?}"); - } else { - log::debug!("Closed WebSocket"); - } + close_socket(&socket2); } }) as Box); @@ -183,11 +173,7 @@ pub(crate) fn ws_connect_impl( let onopen_callback = Closure::wrap(Box::new(move |_| { let control = on_event(WsEvent::Opened); if control.is_break() { - if let Err(err) = socket2.close() { - log::warn!("Failed to close WebSocket: {err:?}"); - } else { - log::debug!("Closed WebSocket"); - } + close_socket(&socket2); } }) as Box); socket.set_onopen(Some(onopen_callback.as_ref().unchecked_ref())); @@ -206,3 +192,11 @@ pub(crate) fn ws_connect_impl( socket: Some(socket), }) } + +fn close_socket(socket: &web_sys::WebSocket) { + if let Err(err) = socket.close() { + log::warn!("Failed to close WebSocket: {}", string_from_js_value(err)); + } else { + log::debug!("Closed WebSocket"); + } +}