Network
WebSocket과 SSE(Server-Sent Events)의 차이점
10Biliion
2025. 6. 26. 08:26
반응형
1. WebSocket이란?
WebSocket은 브라우저와 서버 간에 양방향 통신을 가능하게 하는 프로토콜입니다. HTTP 연결 이후 업그레이드를 통해 별도의 통신 채널을 생성하며, 지속적인 연결을 유지하면서 데이터 전송이 가능합니다.
특징
- 양방향 통신: 클라이언트와 서버가 자유롭게 메시지를 주고받을 수 있음
- 지속적인 연결: 연결을 유지한 채 실시간 데이터 전송 가능
- 낮은 오버헤드: HTTP Header가 반복적으로 전송되지 않음
- 바이너리 데이터 전송 가능
JavaScript 클라이언트
Spring Boot 서버
2. SSE (Server-Sent Events)란?
SSE는 서버가 클라이언트에 일방적으로 데이터를 푸시하는 방식입니다. HTTP 기반의 단방향 스트리밍 방식이며, 브라우저에서 기본적으로 지원합니다.
특징
- 단방향 통신: 서버에서 클라이언트로만 데이터 전송 가능
- 자동 재연결: 네트워크 문제로 연결이 끊겨도 자동 복구
- HTTP 기반: 기존 HTTP/1.1을 사용하며 방화벽 통과 용이
- 설정 간단: WebSocket에 비해 서버 설정이 단순
JavaScript 클라이언트
Spring Boot 서버
WebSocket vs SSE 비교
항목 | WebSocket | SSE(Server-Sent Events) |
통신 방향 | 양방향 | 단방향 (서버 → 클라이언트) |
프로토콜 | ws:// 또는 wss:// (WebSocket) | http:// (기존 HTTP) |
브라우저 지원 | 대부분 지원 | IE를 제외한 모든 주요 브라우저 |
전송 데이터 형식 | 텍스트, 바이너리 | 텍스트(EventStream) |
자동 재연결 | 직접 구현 필요 | 기본 내장 |
방화벽, 프록시 문제 | 상대적으로 많음 | 적음 |
사용 용도 | 채팅, 게임, 주식 등 쌍방향 통신 | 뉴스, 알림 등 서버 푸시 |
4. 어떤 기술을 사용할까?
WebSocket이 적합한 경우
- 실시간 채팅, 협업 툴
- 게임 서버, 멀티플레이
- 실시간 알림 + 클라이언트 액션 처리
SSE가 적합한 경우
- 뉴스 피드, 주가 정보
- 알림, 로그 모니터링
- 리소스가 제한된 환경에서 단순 서버 푸시가 필요한 경우
반응형