axum.rs 1.1 KB

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