text/event-streamtext/event-stream은 Server-Sent Events(SSE)의 미디어 타입으로, 서버가 하나의 HTTP 연결을 열어둔 채 클라이언트로 텍스트 이벤트를 계속 밀어 보내는 단방향 실시간 스트림입니다. 브라우저의 EventSource API가 소비합니다.
이벤트 스트림은 `data:`, `event:`, `id:`, `retry:` 필드를 줄 단위로 쓰고, 빈 줄 하나로 한 이벤트를 종료하는 단순한 텍스트 프로토콜입니다. 예: `data: hello\n\n`. 인코딩은 항상 UTF-8입니다. 서버는 응답을 즉시 닫지 않고 `Cache-Control: no-cache`, 프록시 버퍼링 방지 설정과 함께 스트림을 유지합니다. 연결이 끊기면 브라우저가 마지막 `id:`를 `Last-Event-ID` 헤더로 보내며 자동 재연결하므로 재개(resumption)가 쉽습니다.
WebSocket과 달리 SSE는 단방향(서버→클라이언트)이고 일반 HTTP 위에서 동작해 방화벽·프록시 친화적이며 구현이 단순합니다. 다만 HTTP/1.1에서는 도메인당 동시 연결 수 제한(약 6개)에 걸릴 수 있어, HTTP/2 멀티플렉싱이 이 문제를 완화합니다. 실시간 알림·진행률·LLM 토큰 스트리밍에 적합합니다.
e.g. Content-Type: text/event-stream