단북

LLM의 텍스트 응답을 구현할 때 SSE와 웹소켓 중 무엇을 선호하나요?

LLM 토큰 스트리밍에 쓰이는 SSE(서버센트 이벤트)와 WebSocket을 비교하고, 단방향 스트리밍에 SSE가 적합한 이유를 정리합니다.

LLM 응답을 토큰 단위로 흘려보낼 때 흔히 SSEWebSocket을 비교합니다. 결론부터: LLM의 서버→클라이언트 단방향 텍스트 스트리밍에는 보통 SSE(또는 fetch 스트리밍) 가 더 적합합니다.

SSE (Server-Sent Events)

HTTP 위에서 서버가 클라이언트로 단방향 이벤트 스트림을 보내는 표준입니다.

  • 단방향에 최적 — LLM 토큰 흐름처럼 “서버가 계속 밀어 주는” 시나리오에 딱 맞음.
  • HTTP 기반 — 기존 인프라·프록시·인증과 잘 맞고 구현 단순. 일반 텍스트 스트림.
  • 자동 재연결EventSource는 끊기면 자동 재연결, Last-Event-ID로 재개 지원.
  • 제약 — 기본 EventSource는 GET·커스텀 헤더 제한이 있어, POST·헤더가 필요한 LLM 호출은 fetch + ReadableStream 으로 SSE 형식을 직접 파싱하는 경우가 많음.

WebSocket

하나의 TCP 연결로 양방향 실시간 통신. (웹소켓 vs 폴링)

  • 양방향이 필요할 때 — 음성 대화, 실시간 협업, 빈번한 양방향 상호작용에 적합.
  • 비용 — 별도 프로토콜·연결 관리·재연결·스케일아웃 부담이 큼. 단순 텍스트 스트리밍엔 과함.

비교

항목SSEWebSocket
방향단방향(서버→클라)양방향
프로토콜HTTP별도(ws/wss)
재연결내장(자동)직접 구현
구현 복잡도낮음상대적으로 높음
LLM 토큰 스트리밍적합과한 편(양방향 필요시)

선택 기준: 서버가 토큰을 밀어 주기만 하면 SSE/fetch 스트리밍, 클라이언트도 실시간으로 자주 보내야 하면 WebSocket. 실제 OpenAI 등 다수 LLM API의 스트리밍이 SSE 형식을 사용합니다.

LLM 텍스트 응답 스트리밍에서 SSE와 WebSocket 선택에 대한 설명으로 옳은 것은?

이 레슨을 다 읽으셨나요?

완료 표시는 이 브라우저에 저장됩니다.