From cd255848196da0d8732d31049cc0f98388205a30 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 8 Sep 2022 13:31:18 +0200 Subject: more code --- server/src/main.rs | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) (limited to 'server/src/main.rs') diff --git a/server/src/main.rs b/server/src/main.rs index b4121b9..6a8f11d 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -12,29 +12,38 @@ use warp::hyper::Server; use warp::ws::WebSocket; use warp::{Filter, Rejection, Reply}; -type Rooms = Arc>; +type Rooms = Arc>>; -#[tokio::main] -async fn main() { +fn main() { + tokio::runtime::Builder::new_multi_thread() + .enable_all() + .build() + .unwrap() + .block_on(run()); +} + +async fn run() { env_logger::init_from_env("LOG"); let rooms = Rooms::default(); let rooms = warp::any().map(move || rooms.clone()); - let signaling = warp::path("signaling") - .and(warp::path::param::()) + let app = warp::path!(String) + .map(|_| ()) + .untuple_one() + .and(warp::fs::file("../client-web/public/app.html")); + let signaling = warp::path!(String / "signaling") .and(rooms) .and(warp::ws()) .map(signaling_connect); - let static_routes = { - let index = warp::path::end().and(warp::fs::file("../client-web/public/start.html")); - let assets = warp::path("_assets").and(warp::fs::dir("../client-web/public/assets")); - - warp::get().and(index.or(assets)) - }; + let index = warp::path!().and(warp::fs::file("../client-web/public/start.html")); + let assets = warp::path("_assets").and(warp::fs::dir("../client-web/public/assets")); - let routes = static_routes.or(signaling).recover(handle_rejection); + let routes = warp::get() + .and(assets.or(app).or(index).or(signaling)) + .recover(handle_rejection) + .with(warp::log("stuff")); // if listender fd is passed from the outside world, use it. let mut listenfd = ListenFd::from_env(); @@ -76,7 +85,7 @@ fn signaling_connect(rname: String, rooms: Rooms, ws: warp::ws::Ws) -> impl Repl let room = match rooms.get(&rname) { Some(r) => r, None => { - rooms.insert(rname.to_owned(), Room::default()); + rooms.insert(rname.to_owned(), Default::default()); rooms.get(&rname).unwrap() // TODO never expect this to always work!! } }; -- cgit v1.2.3-70-g09d2