|
mod app; |
|
mod whiteboard; |
|
mod websocket; |
|
|
|
use warp::Filter; |
|
|
|
#[tokio::main] |
|
async fn main() { |
|
let whiteboard = whiteboard::Whiteboard::new(); |
|
let whiteboard = std::sync::Arc::new(tokio::sync::Mutex::new(whiteboard)); |
|
|
|
let websocket_route = warp::path("ws") |
|
.and(warp::ws()) |
|
.and(warp::any().map(move || whiteboard.clone())) |
|
.and_then(websocket::ws_handler); |
|
|
|
let static_files = warp::fs::dir("static"); |
|
let index = warp::get().and(warp::path::end()).and(warp::fs::file("static/index.html")); |
|
|
|
let routes = websocket_route |
|
.or(static_files) |
|
.or(index); |
|
|
|
println!("Server starting on http://0.0.0.0:7860"); |
|
warp::serve(routes).run(([0, 0, 0, 0], 7860)).await; |
|
} |
|
|