Skip to main content
Sonamu의 SSE 엔드포인트를 프론트엔드에서 사용하는 방법을 설명합니다. Sonamu는 sonamu.shared.ts에 내장 useSSEStream 훅을 제공하므로 대부분의 경우 직접 EventSource를 다룰 필요가 없습니다.

내장 useSSEStream 훅

Sonamu 프로젝트를 생성하면 sonamu.shared.tsuseSSEStream 훅이 포함됩니다. 이 훅은 연결 관리, 자동 재시도, locale 헤더 전달을 기본 제공합니다.

API

매개변수: 옵션: 반환값 (SSEStreamState):

사용 예제

useSSEStreamAccept-Language 헤더를 자동으로 전달하므로, 서버에서 locale 기반 응답을 반환할 수 있습니다.

EventSource API (직접 사용)

브라우저 내장 API로 SSE 연결을 관리합니다.

기본 사용법

React에서 직접 구현

아래는 useSSEStream을 사용하지 않고 직접 EventSource를 다루는 방법입니다. 내장 훅이 제공하지 않는 세밀한 제어가 필요한 경우 참고하세요.

커스텀 Hook

사용 예제

실전 예제

1. 실시간 알림

2. 작업 진행률

3. 라이브 피드

4. 다중 이벤트 처리

5. 자동 재연결

Vue 통합

인증 처리

쿠키 기반 인증

주의: CORS 사용 시 credentials: 'include' 불필요 (자동)

Bearer Token 인증

EventSource는 커스텀 헤더를 지원하지 않으므로, URL 파라미터를 사용합니다:
서버 측:

에러 처리

연결 실패

타임아웃 처리

디버깅

브라우저 개발자 도구

로깅

주의사항

클라이언트 SSE 사용 시 주의사항:
  1. 연결 정리: 컴포넌트 언마운트 시 반드시 close()
  2. 이벤트 이름 일치: 서버와 클라이언트 이벤트 이름 동일해야 함
  3. JSON 파싱: 데이터는 항상 문자열로 전달됨
  4. 브라우저 제한: 동시 연결 수 제한 (도메인당 6개)
    • 해결: 연결 재사용 또는 HTTP/2 사용
  5. 재연결 처리: 네트워크 끊김 시 자동 재연결 구현
  6. 메모리 누수: 오래된 데이터 정리
  7. CORS 설정: 다른 도메인에서 사용 시 서버 CORS 설정 필요

Polyfill (IE 지원)

IE 11 등 구형 브라우저 지원:

다음 단계

SSE 설정

SSE 플러그인 설정하기

SSE 엔드포인트 만들기

@stream 데코레이터로 SSE API 구축