use axum::{Router, response::Html, routing::get}; use std::net::SocketAddr; use std::path::Path; use tokio::fs::File; use tokio::io::{self, AsyncReadExt}; use tower_http::services::ServeDir; #[tokio::main] async fn main() { let app = Router::new() .route("/", get(handler)) .route("/game", get(game)) .nest_service("/web/assets", ServeDir::new("../web/assets")); let addr = SocketAddr::from(([0, 0, 0, 0], 3500)); println!("listening on {}", addr); axum_server::bind(addr) .serve(app.into_make_service()) .await .unwrap(); } async fn handler() -> Html { let html_content = read_html_from_file("../web/templates/view/index.html") .await .unwrap_or_else(|_| "

Error loading HTML file

".to_string()); Html(html_content) } async fn game() -> Html { let html_content = read_html_from_file("../web/templates/view/game.html") .await .unwrap_or_else(|_| "

Error loading HTML file

".to_string()); Html(html_content) } async fn read_html_from_file>(path: P) -> io::Result { let mut file = File::open(path).await?; let mut contents = String::new(); file.read_to_string(&mut contents).await?; Ok(contents) }