use chromiumoxide::browser::{Browser, BrowserConfig}; use futures_util::StreamExt; use tokio::sync::broadcast; pub async fn run_browser(tx: broadcast::Sender) { let (browser, mut handler) = Browser::launch( BrowserConfig::builder() .arg("--no-sandbox") .build().unwrap() ).await.unwrap(); tokio::spawn(async move { while let Some(h) = handler.next().await { h.unwrap(); } }); let page = browser.new_page("https://www.google.com").await.unwrap(); loop { if let Ok(img) = page.screenshot().await { let b64 = base64::encode(img); let _ = tx.send(format!("{{\"type\":\"frame\", \"data\":\"{}\"}}", b64)); } tokio::time::sleep(std::time::Duration::from_millis(200)).await; } }