Skip to main content
Sonamu는 @stream 데코레이터를 통해 SSE 엔드포인트를 쉽게 만들 수 있습니다. ctx.createSSE()로 생성한 SSE 연결 객체를 사용하여 이벤트를 전송합니다.

@stream 데코레이터

SSE 엔드포인트를 정의하는 데코레이터입니다.

기본 사용법

@stream 옵션

스트림 타입
지원 타입:
  • 'sse': Server-Sent Events
  • (향후 WebSocket 지원 예정)

SSEConnection API

ctx.createSSE()로 생성된 SSE 연결 객체입니다.

closed

연결이 종료되었는지 여부를 나타내는 읽기 전용 속성입니다. 클라이언트가 연결을 끊거나 end()를 호출한 후 true가 됩니다.

onClose(callback)

연결이 종료될 때 호출될 콜백을 등록합니다. 클라이언트 측 연결 종료와 end() 호출 모두에서 실행됩니다. 타이머나 외부 리소스 정리에 활용할 수 있습니다.

publish(event, data)

이벤트를 클라이언트로 전송합니다.
타입 안전성:

end()

연결을 종료합니다.
자동 전송: event: end, data: END

실전 예제

1. 실시간 알림

2. 작업 진행률

3. 라이브 피드

4. 다중 이벤트

5. 조건부 전송

연결 관리

클라이언트 연결 종료 감지

Keep-Alive

SSE는 자동으로 Keep-Alive를 전송하지만, 커스텀 구현도 가능합니다:

에러 처리

주의사항

SSE 엔드포인트 작성 시 주의사항:
  1. @stream@api는 동시에 사용할 수 없습니다: SSE 엔드포인트에는 @stream 데코레이터만 사용합니다
  2. 반드시 end() 호출: 연결 종료 필수
  3. 무한 루프 주의: 적절한 대기 시간 필요
  4. 이벤트 스키마 일치: events와 publish 이벤트 이름 일치 필수
  5. 메모리 누수 방지: 타이머/리스너 정리

다음 단계

SSE 설정

SSE 플러그인 설정하기

클라이언트 통합

프론트엔드에서 SSE 사용하기