您的位置:首页 > 汽车 > 时评 > 小游戏秒玩入口_美食个人网站设计作品_武汉网站推广公司_网站搭建平台

小游戏秒玩入口_美食个人网站设计作品_武汉网站推广公司_网站搭建平台

2025/8/20 20:55:08 来源:https://blog.csdn.net/weixin_44786530/article/details/146369114  浏览:    关键词:小游戏秒玩入口_美食个人网站设计作品_武汉网站推广公司_网站搭建平台
小游戏秒玩入口_美食个人网站设计作品_武汉网站推广公司_网站搭建平台

使用的是warp这个依赖库,这个依赖库是一个开源的rust server库,开源地址:https://github.com/seanmonstar/warp,使用起来也是非常的方便,只需要添加到自己本地cargo.toml依赖中,并跟上tokio这个依赖项。

tokio = { version = "1", features = ["full"] }
warp = "0.3"

然后在新创建两个函数,用于被前端调用:

mod command;
use std::sync::{Arc, Mutex};
mod utils;
use tauri::menu::*;struct ServerState {server_handle: Option<tokio::task::JoinHandle<()>>,
}#[tauri::command]
async fn start_server(state: tauri::State<'_, Arc<Mutex<ServerState>>>,path: String,
) -> Result<(), String> {println!("start_server: {}", path);let mut state = state.lock().unwrap();if state.server_handle.is_some() {return Err("Server is already running".into());}let path_clone = path.clone();let server_handle = tokio::spawn(async move {let route = warp::fs::dir(path_clone);warp::serve(route).run(([127, 0, 0, 1], 3030)).await;});state.server_handle = Some(server_handle);println!("Server started at http://127.0.0.1:3030");Ok(())
}#[tauri::command]
async fn stop_server(state: tauri::State<'_, Arc<Mutex<ServerState>>>) -> Result<(), String> {let mut state = state.lock().unwrap();println!("stop_server");if let Some(handle) = state.server_handle.take() {handle.abort();Ok(())} else {Err("Server is not running".into())}
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]

再将server_handle添加到tauri中管理:

    tauri::Builder::default().manage(Arc::new(Mutex::new(ServerState {server_handle: None,})))

并将启动和关闭两个函数添加到invoke_handler中:

然后在前端js中进行调用启动和关闭即可:

# selected是用户选择的一个文件夹路径
await invoke('start_server', { path: selected })
console.log('Server started successfully')# 关闭
const stopServer = () => {invoke('stop_server')
}

最后就可以看到效果了:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com