This axum server implementation is different from a default axum server.
This axum server uses
- a wrapped TcpListener and a wrapped TcpStream (which drops data present in memory when TcpStream is dropped)
- a custom type for getting client's socket information
- a graceful shutdown signal
This is how my main function looked like before integrating dioxus
#[tokio::main]
async fn main() {
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
dotenv::dotenv().ok();
tracing_subscriber::registry()
.with(tracing::level_filters::LevelFilter::from_level(tracing::Level::DEBUG))
.with(tracing_subscriber::fmt::Layer::default())
.init();
axum::serve(
server::get_custom_listener().await,
server::routes().await.into_make_service_with_connect_info::<server::ClientSocket>(),
)
.with_graceful_shutdown(shutdown_signal())
.await
.unwrap();
}