improve websocket error handling

This commit is contained in:
Valerio Ageno
2025-03-30 12:04:50 +02:00
parent a6cbfdf20c
commit 9f333962dc
3 changed files with 15 additions and 6 deletions
+1 -3
View File
@@ -8,10 +8,8 @@ use tower_http::services::ServeDir;
use tuono_internal::config::Config;
use crate::env::load_env_vars;
use crate::{
catch_all::catch_all, services::logger::LoggerLayer
};
use crate::vite::{vite_reverse_proxy, vite_websocket_proxy};
use crate::{catch_all::catch_all, services::logger::LoggerLayer};
const DEV_PUBLIC_DIR: &str = "public";
const PROD_PUBLIC_DIR: &str = "out/client";
+1 -1
View File
@@ -2,4 +2,4 @@ mod reverse_proxy;
mod websocket_proxy;
pub use reverse_proxy::vite_reverse_proxy;
pub use websocket_proxy::vite_websocket_proxy;
pub use websocket_proxy::vite_websocket_proxy;
+13 -2
View File
@@ -105,8 +105,19 @@ async fn handle_socket(mut tuono_socket: WebSocket) {
};
if let Err(err) = tuono_sender.send(msg_to_browser).await {
if err.to_string() != Error::AlreadyClosed.to_string() {
eprintln!("Failed to send back message from vite to browser: {err}")
let err_str = &err.to_string();
let error = err
.into_inner()
.downcast::<Error>()
.unwrap_or(Box::new(Error::Io(std::io::Error::new(
std::io::ErrorKind::Other,
"Failed to parse error into tungstenite::Error",
))));
match *error {
Error::AlreadyClosed => {}
Error::Io(err) => eprintln!("IO error received from vite: {}", err.to_string()),
_ => eprintln!("Failed to send back message from vite to browser: {err_str}"),
}
}
}