피드로 돌아가기
Streaming Gemini API Responses in Rust + Tauri — Real-Time Token Display
Dev.toDev.to
Frontend

Rust 기반 Tauri Event Emitter를 통한 Gemini API 실시간 스트리밍 구현

Streaming Gemini API Responses in Rust + Tauri — Real-Time Token Display

hiyoyo2026년 5월 4일3intermediate

Context

AI 응답 대기 시간 동안 피드백 부재로 인한 사용자 경험 저하 문제 발생. 기존의 단일 요청-응답 구조는 수 초 이상의 대기 시간을 유발하여 시스템 장애로 오인될 가능성이 높은 한계점 보유.

Technical Solution

  • Gemini API의 streamGenerateContent 엔드포인트를 채택한 서버-전송 이벤트 기반 구조 설계
  • reqwest 라이브러리의 bytes_stream을 활용한 HTTP 응답 데이터의 청크 단위 비동기 처리
  • serde_json을 통한 스트림 내 개별 JSON 객체의 실시간 파싱 및 텍스트 토큰 추출
  • Tauri의 Emitter 인터페이스를 사용하여 Rust 백엔드에서 React 프론트엔드로 토큰을 즉시 전송하는 Event-driven 통신 구현
  • listen API를 통한 프론트엔드 상태 업데이트 및 응답 완료 이벤트(ai-done) 처리로 스트리밍 라이프사이클 관리
  • CSS Animation 기반의 커서 렌더링을 통해 데이터 수신 중임을 알리는 시각적 피드백 제공

1. LLM API 채택 시 Streaming 지원 여부 및 Chunk 단위 데이터 포맷 확인

2. 백엔드-프론트엔드 간 비동기 이벤트 전송 체계(Event Emitter 등) 구축

3. 스트림 종료 시점(`done` 이벤트)을 명시하여 리소스 정리 및 상태 전환 처리

4. 데이터 수신 중임을 알리는 시각적 인디케이터(Blinking Cursor 등) 배치

원문 읽기