diff --git a/src/commands/dev/edge/mod.rs b/src/commands/dev/edge/mod.rs index 81a0d5604..2bde1ed42 100644 --- a/src/commands/dev/edge/mod.rs +++ b/src/commands/dev/edge/mod.rs @@ -4,7 +4,7 @@ mod setup; use server::serve; use setup::Init; -use crate::commands::dev::ServerConfig; +use crate::commands::dev::{socket, ServerConfig}; use crate::settings::global_user::GlobalUser; use crate::settings::toml::{DeployConfig, Target}; @@ -20,9 +20,22 @@ pub fn dev( let mut target = target.clone(); // TODO: replace asset manifest parameter - let preview_token = - setup::upload(&mut target, None, &deploy_config, &user, init.preview_token)?; - let server = serve(server_config, preview_token, init.host); + let preview_token = setup::upload( + &mut target, + None, + &deploy_config, + &user, + init.preview_token.clone(), + )?; let mut runtime = TokioRuntime::new()?; - runtime.block_on(server) + runtime.block_on(async { + let devtools_listener = tokio::spawn(socket::listen(init.websocket_url)); + let server = tokio::spawn(serve(server_config, preview_token, init.host)); + let res = tokio::try_join!(async { devtools_listener.await? }, async { server.await? }); + + match res { + Ok(_) => Ok(()), + Err(e) => Err(e), + } + }) } diff --git a/src/commands/dev/edge/setup.rs b/src/commands/dev/edge/setup.rs index 4faa7a3f6..6b154cfed 100644 --- a/src/commands/dev/edge/setup.rs +++ b/src/commands/dev/edge/setup.rs @@ -39,6 +39,7 @@ pub(super) fn upload( Ok(response.result.preview_token) } +#[derive(Debug, Clone)] pub struct Init { pub host: String, pub websocket_url: Url, @@ -72,7 +73,11 @@ impl Init { let response = client.get(exchange_url).send()?.error_for_status()?; let text = &response.text()?; let response: InspectorV4ApiResponse = serde_json::from_str(text)?; - let websocket_url = Url::parse(&response.inspector_websocket)?; + let full_url = format!( + "{}?{}={}", + &response.inspector_websocket, "cf_workers_preview_token", &response.token + ); + let websocket_url = Url::parse(&full_url)?; let preview_token = response.token; Ok(Init {