1234567891011121314151617181920212223242526272829303132 |
- use dioxus_core::{Element, LazyNodes, Scope};
- use dioxus_liveview as liveview;
- use warp::ws::Ws;
- use warp::Filter;
- #[tokio::main]
- async fn main() {
- pretty_env_logger::init();
- let addr = ([127, 0, 0, 1], 3030);
- // todo: compactify this routing under one liveview::app method
- let view = liveview::new(addr);
- let body = view.body();
- let routes = warp::path::end()
- .map(move || warp::reply::html(body.clone()))
- .or(warp::path("app")
- .and(warp::ws())
- .and(warp::any().map(move || view.clone()))
- .map(|ws: Ws, view: liveview::Liveview| {
- ws.on_upgrade(|socket| async move {
- view.upgrade(socket, app).await;
- })
- }));
- warp::serve(routes).run(addr).await;
- }
- fn app(cx: Scope) -> Element {
- cx.render(LazyNodes::new(|f| f.text(format_args!("hello world!"))))
- }
|