|
@@ -23,6 +23,7 @@ const AUTO_RELOAD_SCRIPT: &str = include_str!("./auto-reload.js");
|
|
|
|
|
|
struct State {
|
|
struct State {
|
|
serve_dir: PathBuf,
|
|
serve_dir: PathBuf,
|
|
|
|
+ address: SocketAddr,
|
|
tx: Sender<()>,
|
|
tx: Sender<()>,
|
|
}
|
|
}
|
|
|
|
|
|
@@ -60,8 +61,12 @@ pub fn start_dev_server<P: AsRef<Path>>(address: SocketAddr, path: P) {
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
- let state = Arc::new(State { serve_dir, tx });
|
|
|
|
- let router = Router::new()
|
|
|
|
|
|
+ let state = Arc::new(State {
|
|
|
|
+ serve_dir,
|
|
|
|
+ tx,
|
|
|
|
+ address,
|
|
|
|
+ });
|
|
|
|
+ let server_router = Router::new()
|
|
.fallback(
|
|
.fallback(
|
|
Router::new().nest(
|
|
Router::new().nest(
|
|
"/",
|
|
"/",
|
|
@@ -73,13 +78,14 @@ pub fn start_dev_server<P: AsRef<Path>>(address: SocketAddr, path: P) {
|
|
),
|
|
),
|
|
)
|
|
)
|
|
.route(
|
|
.route(
|
|
- "/_tauri-cli/ws",
|
|
|
|
|
|
+ "/__tauri_cli",
|
|
get(move |ws: WebSocketUpgrade| async move {
|
|
get(move |ws: WebSocketUpgrade| async move {
|
|
ws.on_upgrade(|socket| async move { ws_handler(socket, state).await })
|
|
ws.on_upgrade(|socket| async move { ws_handler(socket, state).await })
|
|
}),
|
|
}),
|
|
);
|
|
);
|
|
|
|
+
|
|
Server::bind(&address)
|
|
Server::bind(&address)
|
|
- .serve(router.into_make_service())
|
|
|
|
|
|
+ .serve(server_router.into_make_service())
|
|
.await
|
|
.await
|
|
.unwrap();
|
|
.unwrap();
|
|
})
|
|
})
|
|
@@ -120,7 +126,10 @@ async fn handler<T>(req: Request<T>, state: Arc<State>) -> impl IntoResponse {
|
|
with_html_head(&mut document, |head| {
|
|
with_html_head(&mut document, |head| {
|
|
let script_el =
|
|
let script_el =
|
|
NodeRef::new_element(QualName::new(None, ns!(html), "script".into()), None);
|
|
NodeRef::new_element(QualName::new(None, ns!(html), "script".into()), None);
|
|
- script_el.append(NodeRef::new_text(AUTO_RELOAD_SCRIPT));
|
|
|
|
|
|
+ script_el.append(NodeRef::new_text(AUTO_RELOAD_SCRIPT.replace(
|
|
|
|
+ "{{reload_url}}",
|
|
|
|
+ &format!("ws://{}/__tauri_cli", state.address),
|
|
|
|
+ )));
|
|
head.prepend(script_el);
|
|
head.prepend(script_el);
|
|
});
|
|
});
|
|
|
|
|