SSE란?
Server-Sent Events는 서버에서 클라이언트로 단방향 실시간 통신을 제공하는 기술입니다.HTTP vs SSE vs WebSocket
비교표
SSE 사용 사례
실시간 알림
새 메시지, 좋아요, 댓글 등
진행 상황
파일 업로드, 작업 처리 진행률
라이브 피드
뉴스 피드, 소셜 미디어 업데이트
모니터링
서버 상태, 로그 스트리밍
기본 설정
sonamu.config.ts
- SSE 엔드포인트 자동 등록
- 자동 재연결 지원
- Keep-alive 자동 전송
SSE 플러그인 옵션
- boolean
- SsePluginOptions
간단한 활성화/비활성화
SSE 작동 방식
연결 흐름
HTTP 헤더
SSE는 특수한 HTTP 헤더를 사용합니다:text/event-stream: SSE 전용 Content-Typeno-cache: 캐싱 방지keep-alive: 연결 유지
실전 설정 예제
1. 기본 설정 (권장)
2. 개발/프로덕션 분리
3. 조건부 활성화
압축 비활성화
SSE는 스트리밍 응답이므로 압축을 비활성화해야 합니다.CORS 설정
SSE를 다른 도메인에서 사용하려면 CORS 설정이 필요합니다.credentials: true 설정 필요
환경별 전략
개발 환경
프로덕션 환경
타임아웃 설정
SSE 연결은 장시간 유지되므로 타임아웃 설정이 중요합니다.connectionTimeout: 0: 연결 타임아웃 비활성화 (SSE는 장시간 유지)keepAliveTimeout: Keep-alive 간격 (기본값: 5초)
프록시 설정 (Nginx)
Nginx를 사용하는 경우 SSE를 위한 설정이 필요합니다.proxy_buffering off: 버퍼링 비활성화 (즉시 전송)proxy_cache off: 캐싱 비활성화proxy_read_timeout 24h: 읽기 타임아웃 (장시간)
디버깅
브라우저 개발자 도구
curl 테스트
-N: 버퍼링 비활성화 (즉시 출력)
주의사항
브라우저 지원
SSE는 모든 모던 브라우저에서 지원됩니다:
IE 11 지원: event-source-polyfill
다음 단계
SSE 엔드포인트 만들기
@stream 데코레이터로 SSE API 구축
클라이언트 통합
프론트엔드에서 SSE 사용하기