import { invoke } from '@tauri-apps/api/core'; import { listen } from '@tauri-apps/api/event'; import { createSignal, onMount, onCleanup } from 'solid-js'; interface PingResponse { message: string; counter: number; } export function IpcDemo() { const [pingCount, setPingCount] = createSignal(0); const [pingResult, setPingResult] = createSignal(null); const [greetResult, setGreetResult] = createSignal(''); const [backendEvent, setBackendEvent] = createSignal('Waiting for backend...'); // Frontend -> Rust: invoke ping command const handlePing = async () => { const result = await invoke('ping', { count: pingCount() }); setPingResult(result); setPingCount(result.counter); }; // Frontend -> Rust: invoke greet command const handleGreet = async () => { const result = await invoke('greet', { name: 'HoloHue' }); setGreetResult(result); }; // Rust -> Frontend: listen for backend-ready event onMount(async () => { const unlisten = await listen('backend-ready', (event) => { setBackendEvent(event.payload.message); }); onCleanup(() => unlisten()); }); return (

IPC Bridge Demo

{/* Backend event status */}

Rust -> Frontend (Event)

{backendEvent()}

{/* Ping/Pong demo */}

Frontend -> Rust (Invoke: ping)

{pingResult() && (

Response: {pingResult()!.message} (counter: {pingResult()!.counter})

)}
{/* Greet demo */}

Frontend -> Rust (Invoke: greet)

{greetResult() && (

{greetResult()}

)}
); }