WebSocket vs SSE
2026.10.01 · 2분
1. 가장 큰 차이
2. 항목별 비교
| 항목 | WebSocket | SSE |
|---|---|---|
| 방향 | 양방향 | 서버 → 클라이언트 |
| 기반 | WebSocket 프로토콜 | HTTP |
| 데이터 | 텍스트·바이너리 | UTF-8 텍스트 |
| 브라우저 API | WebSocket | EventSource |
| 자동 재연결 | 직접 구현 | EventSource가 기본 지원 |
| 메시지 규칙 | 직접 설계 | 이벤트 형식 제공 |
| 적합한 기능 | 채팅·게임·협업 | 알림·로그·AI 출력 |
| 운영 난이도 | 상대적으로 높음 | 비교적 단순 |
3. 채팅에는 무엇이 맞을까?
사용자가 메시지를 보내고 서버도 새 메시지를 즉시 전달해야 하므로 WebSocket이 자연스럽습니다.
text
사용자 메시지 ──> 서버
새 메시지 <── 서버
입력 중 상태 <─> 서버물론 메시지 전송은 REST, 수신은 SSE로 나눌 수도 있지만 양방향 이벤트가 많다면 WebSocket 하나로 관리하는 편이 이해하기 쉬울 수 있습니다.
4. AI 답변에는 무엇이 맞을까?
사용자 질문은 한 번 보내고 서버 답변만 연속해서 받는 구조라면 SSE 또는 HTTP 응답 스트리밍이 단순합니다.
text
POST /chat → 질문 전송
스트리밍 응답 ← 답변 조각 수신사용자가 음성·영상 데이터를 계속 보내면서 서버 결과도 동시에 받는다면 WebSocket이나 다른 양방향 스트리밍 기술이 더 적합할 수 있습니다.
5. 운영 시 확인할 점
두 방식 모두 지속 연결이므로 다음을 확인해야 합니다.
- 로드밸런서와 프록시의 Idle Timeout
- 연결 끊김과 재연결 정책
- 서버 배포 때 연결 종료 처리
- 누락·중복 이벤트 처리
- 인증 토큰 만료
- 동시 연결 수와 서버 자원
SSE가 단순하다고 해서 운영 고려 사항이 사라지는 것은 아닙니다.
6. 선택 질문
다음 질문에서 하나라도 “예”라면 WebSocket 쪽을 먼저 검토합니다.
- 클라이언트가 서버로 실시간 이벤트를 자주 보내는가?
- 텍스트가 아닌 바이너리 메시지가 필요한가?
- 양쪽이 독립적으로 메시지를 시작해야 하는가?
모두 “아니요”이고 서버가 진행 상황이나 답변만 내려준다면 SSE가 더 단순할 가능성이 큽니다.
7. 핵심 정리
양방향 상호작용이 핵심이면 WebSocket, 서버에서 클라이언트로 이어지는 텍스트 스트림이 핵심이면 SSE를 우선 고려한다.