Rust에서 프론트엔드 호출하기
@tauri-apps/api NPM 패키지는 전역 이벤트와 Webview 특정 이벤트를 모두 감지(수신)하기 위한 API를 제공합니다.
-
전역 이벤트 감지
import { listen } from '@tauri-apps/api/event';type DownloadStarted = {url: string;downloadId: number;contentLength: number;};listen<DownloadStarted>('download-started', (event) => {console.log(`downloading ${event.payload.contentLength} bytes from ${event.payload.url}`);}); -
Webview 특정 이벤트 감지
import { getCurrentWebviewWindow } from '@tauri-apps/api/webviewWindow';const appWebview = getCurrentWebviewWindow();appWebview.listen<string>('logged-in', (event) => {localStorage.setItem('session-token', event.payload);});
The listen 함수는 애플리케이션의 전체 “라이프타임” 기간 동안 이벤트 리스너 등록이 유지됩니다.
이벤트 감지(수신)를 중지하려면 listen 함수가 반환하는 unlisten 함수를 사용할 수 있습니다:
import { listen } from '@tauri-apps/api/event';
const unlisten = await listen('download-started', (event) => {});unlisten();전역 이벤트와 Webview 특정 이벤트 모두 Rust에 등록된 리스너에게 전달됩니다.
-
전역 이벤트 감지
src-tauri/src/lib.rs use tauri::Listener;#[cfg_attr(mobile, tauri::mobile_entry_point)]pub fn run() {tauri::Builder::default().setup(|app| {app.listen("download-started", |event| {if let Ok(payload) = serde_json::from_str::<DownloadStarted>(&event.payload()) {println!("downloading {}", payload.url);}});Ok(())}).run(tauri::generate_context!()).expect("error while running tauri application");} -
Webview 특정 이벤트 감지
src-tauri/src/lib.rs use tauri::{Listener, Manager};#[cfg_attr(mobile, tauri::mobile_entry_point)]pub fn run() {tauri::Builder::default().setup(|app| {let webview = app.get_webview_window("main").unwrap();webview.listen("logged-in", |event| {let session_token = event.data;// save token..});Ok(())}).run(tauri::generate_context!()).expect("error while running tauri application");}
The listen 함수는 애플리케이션의 전체 “라이프타임” 기간 동안 이벤트 리스너 등록이 유지됩니다.
이벤트 감지(수신)를 중지하려면 listen 함수가 반환하는 unlisten 함수를 사용할 수 있습니다:
// unlisten outside of the event handler scope:let event_id = app.listen("download-started", |event| {});app.unlisten(event_id);
// unlisten when some event criteria is matchedlet handle = app.handle().clone();app.listen("status-changed", |event| { if event.data == "ready" { handle.unlisten(event.id); }});또한 Tauri는 이벤트를 한 번만 감지(수신)하기 위한 유틸리티 함수를 제공합니다:
app.once("ready", |event| { println!("app is ready");});이 경우 이벤트 리스너는 첫 번째 트리거 후 즉시 등록 해제됩니다.
© 2026 Tauri Contributors. CC-BY / MIT