乐闻世界logo
搜索文章和话题

Tauri 如何实现前端与 Rust 后端的 IPC 通信

2月19日 19:24

Tauri 的 IPC(进程间通信)机制是前端与 Rust 后端通信的核心,主要通过以下方式实现:

前端调用 Rust 后端

使用 @tauri-apps/api/tauriinvoke 方法:

typescript
import { invoke } from '@tauri-apps/api/tauri'; // 调用 Rust 命令 const result = await invoke('greet', { name: 'World' });

Rust 端定义命令

src-tauri/src/main.rs 中使用 #[tauri::command] 宏:

rust
#[tauri::command] fn greet(name: &str) -> String { format!("Hello, {}!", name) } fn main() { tauri::Builder::default() .invoke_handler(tauri::generate_handler![greet]) .run(tauri::generate_context!()) .expect("error while running tauri application"); }

Rust 后端主动推送消息到前端

使用 emit 方法:

rust
// Rust 端 window.emit("event-name", payload)?; // 前端监听 import { listen } from '@tauri-apps/api/event'; const unlisten = await listen('event-name', (event) => { console.log(event.payload); });

数据序列化

  • 自动使用 JSON 进行序列化和反序列化
  • 支持复杂的数据类型(对象、数组等)
  • Rust 端需要实现 SerializeDeserialize trait

错误处理

  • Rust 端返回 Result 类型会自动转换为 Promise
  • 前端可以使用 try-catch 捕获错误
标签:Tauri