| use chromiumoxide::browser::{Browser, BrowserConfig}; | |
| use futures_util::StreamExt; | |
| use tokio::sync::broadcast; | |
| pub async fn run_browser(tx: broadcast::Sender<String>) { | |
| 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; | |
| } | |
| } |