MCPcopy Create free account
hub / github.com/NativeScript/SimDeck / proxied_websocket_url_for_target

Function proxied_websocket_url_for_target

packages/server/src/devtools.rs:310–339  ·  view source on GitHub ↗
(target_id: &str)

Source from the content-addressed store, hash-verified

308}
309
310pub async fn proxied_websocket_url_for_target(target_id: &str) -> Result<String, String> {
311 let port = proxied_target_port(target_id)?;
312 let list = fetch_devtools_target_list(port).await?;
313 let entries = list.as_array().ok_or_else(|| {
314 format!("DevTools endpoint on {DEVTOOLS_HOST}:{port} did not return a target list.")
315 })?;
316 for entry in entries {
317 let target = if target_id.starts_with("metro-") {
318 build_metro_target("", None, None, port, entry)
319 } else if target_id.starts_with("cdp-") {
320 let Some(target) = build_chrome_inspector_target("", None, port, entry) else {
321 continue;
322 };
323 target
324 } else {
325 return Err("Not a proxied DevTools target id.".to_owned());
326 };
327 if target.id == target_id {
328 if target_id.starts_with("metro-") {
329 return Ok(metro_websocket_debugger_url(port, entry));
330 }
331 return chrome_inspector_websocket_debugger_url(port, entry).ok_or_else(|| {
332 format!("DevTools target {target_id} does not expose a WebSocket URL.")
333 });
334 }
335 }
336 Err(format!(
337 "DevTools target {target_id} is no longer available."
338 ))
339}
340
341pub async fn proxy_websocket(socket: WebSocket, upstream_url: String) {
342 if let Err(error) = proxy_websocket_inner(socket, upstream_url).await {

Callers 1

Tested by

no test coverage detected