Files
DPM/src-tauri/src/lib.rs
T

43 lines
1.2 KiB
Rust
Raw Normal View History

2026-05-12 23:19:37 +08:00
mod events;
mod models;
mod server;
mod storage;
2026-05-12 22:38:52 +08:00
2026-05-13 00:10:59 +08:00
use std::io::{Read, Write};
use std::time::Duration;
2026-05-12 22:38:52 +08:00
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
2026-05-12 23:19:37 +08:00
// 在后台线程启动 HTTP 服务器
std::thread::spawn(|| {
let rt = tokio::runtime::Runtime::new().expect("无法创建 tokio runtime");
rt.block_on(async {
server::start().await;
});
});
2026-05-13 00:10:59 +08:00
// 等待 HTTP 服务器就绪后再打开窗口
for i in 0..50 {
if let Ok(mut s) = std::net::TcpStream::connect_timeout(
&"127.0.0.1:8000".parse().unwrap(),
Duration::from_millis(500),
) {
// 发送一个简单的 HTTP 请求测试
let _ = s.write_all(b"GET /api/state HTTP/1.0\r\n\r\n");
let mut buf = [0u8; 4];
if s.read(&mut buf).is_ok() {
break;
}
}
if i == 0 {
eprintln!("[dpm] 等待 HTTP 服务器启动...");
}
std::thread::sleep(Duration::from_millis(100));
}
2026-05-12 22:38:52 +08:00
tauri::Builder::default()
.plugin(tauri_plugin_opener::init())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}