dioxus/packages/liveview
2021-12-15 16:04:27 -05:00
..
examples wip: rename fc to component 2021-12-09 21:19:31 -05:00
src wip: rename fc to component 2021-12-09 21:19:31 -05:00
Cargo.toml docs: update cargo tomls 2021-12-15 16:04:27 -05:00
CHANGELOG.md docs: update cargo tomls 2021-12-15 16:04:27 -05:00
README.md docs: update local examples and docs to support new syntaxes 2021-12-15 15:56:53 -05:00

Dioxus LiveView

Enabling server-rendered and hybrid applications with incredibly low latency (<1ms).

#[async_std::main]
async fn main() -> tide::Result<()> {
    let liveview_pool = dioxus::liveview::pool::default();
    let mut app = tide::new();

    // serve the liveview client
    app.at("/").get(dioxus::liveview::liveview_frontend);

    // and then connect the client to the backend
    app.at("/app").get(|req| dioxus::liveview::launch(App, Props { req }))

    app.listen("127.0.0.1:8080").await?;

    Ok(())
}

Dioxus LiveView runs your Dioxus apps on the server

use soyuz::prelude::*;

#[tokio::main]
async fn main() {
    let mut app = soyuz::new();
    app.at("/app").get(websocket(handler));
    app.listen("127.0.0.1:8080").await.unwrap();
}

async fn order_shoes(mut req: WebsocketRequest) -> Response {
    let stream = req.upgrade();
    dioxus::liveview::launch(App, stream).await;    
}

fn App(cx: Context, props: &()) -> Element {
    let mut count = use_state(&cx, || 0);
    cx.render(rsx!(
        button { onclick: move |_| count += 1, "Incr" }
        button { onclick: move |_| count -= 1, "Decr" }
    ))
}