diamond-in commited on
Commit
f96374a
·
verified ·
1 Parent(s): 89b790c

Update src/browser/controller.rs

Browse files
Files changed (1) hide show
  1. src/browser/controller.rs +17 -13
src/browser/controller.rs CHANGED
@@ -1,24 +1,28 @@
1
  use chromiumoxide::browser::{Browser, BrowserConfig};
 
2
  use futures_util::StreamExt;
3
- use tokio::sync::broadcast;
4
 
5
- pub async fn run_browser(tx: broadcast::Sender<String>) {
6
  let (browser, mut handler) = Browser::launch(
7
  BrowserConfig::builder()
8
  .arg("--no-sandbox")
9
- .build().unwrap()
10
- ).await.unwrap();
 
 
 
 
 
11
 
 
12
  tokio::spawn(async move {
13
- while let Some(h) = handler.next().await { h.unwrap(); }
 
 
 
 
14
  });
15
 
16
- let page = browser.new_page("https://www.google.com").await.unwrap();
17
- loop {
18
- if let Ok(img) = page.screenshot().await {
19
- let b64 = base64::encode(img);
20
- let _ = tx.send(format!("{{\"type\":\"frame\", \"data\":\"{}\"}}", b64));
21
- }
22
- tokio::time::sleep(std::time::Duration::from_millis(200)).await;
23
- }
24
  }
 
1
  use chromiumoxide::browser::{Browser, BrowserConfig};
2
+ use chromiumoxide::page::Page;
3
  use futures_util::StreamExt;
 
4
 
5
+ pub async fn init_browser() -> (Browser, Page) {
6
  let (browser, mut handler) = Browser::launch(
7
  BrowserConfig::builder()
8
  .arg("--no-sandbox")
9
+ .arg("--disable-setuid-sandbox")
10
+ .arg("--headless")
11
+ .build()
12
+ .unwrap(),
13
+ )
14
+ .await
15
+ .unwrap();
16
 
17
+ // Critical: Keep the browser handler running in the background
18
  tokio::spawn(async move {
19
+ while let Some(h) = handler.next().await {
20
+ if let Err(e) = h {
21
+ eprintln!("Browser handler error: {}", e);
22
+ }
23
+ }
24
  });
25
 
26
+ let page = browser.new_page("about:blank").await.unwrap();
27
+ (browser, page)
 
 
 
 
 
 
28
  }