axum.rs 971 B

123456789101112131415161718192021222324252627282930313233
  1. #![cfg(feature = "axum")]
  2. use axum::{extract::ws::WebSocketUpgrade, response::Html, routing::get, Router};
  3. use dioxus_core::{Element, LazyNodes, Scope};
  4. #[tokio::main]
  5. async fn main() {
  6. pretty_env_logger::init();
  7. let addr: std::net::SocketAddr = ([127, 0, 0, 1], 3030).into();
  8. let view = dioxus_liveview::new(addr);
  9. let body = view.body("<title>Dioxus Liveview</title>");
  10. let app = Router::new()
  11. .route("/", get(move || async { Html(body) }))
  12. .route(
  13. "/app",
  14. get(move |ws: WebSocketUpgrade| async move {
  15. ws.on_upgrade(move |socket| async move {
  16. view.upgrade_axum(socket, app).await;
  17. })
  18. }),
  19. );
  20. axum::Server::bind(&addr.to_string().parse().unwrap())
  21. .serve(app.into_make_service())
  22. .await
  23. .unwrap();
  24. }
  25. fn app(cx: Scope) -> Element {
  26. cx.render(LazyNodes::new(|f| f.text(format_args!("hello world!"))))
  27. }