1. 웹소켓이란?
웹소켓(WebSocket)은 클라이언트와 서버가 지속적으로 연결을 유지하면서 양방향 통신(Full-Duplex)을 할 수 있도록 해주는 네트워크 프로토콜입니다.
기존 HTTP 통신과는 달리 "요청-응답"이 아니라 "지속 연결"을 기반으로 동작해요.
2. 기존 HTTP와의 차이
항목 HTTP WebSocket
| 연결 방식 | 요청-응답 후 끊김 (비연결 지향) | 연결을 맺고 계속 유지 (연결 지향) |
| 통신 방향 | 단방향 (클라이언트 → 서버) | 양방향 (서버 ↔ 클라이언트) |
| 사용 목적 | 문서 전송, API 통신 | 실시간 데이터 통신 (채팅, 주식 시세 등) |
| 오버헤드 | 매 요청마다 헤더 포함 | 연결 이후엔 오버헤드 없음 |
3. 웹소켓의 동작 방식
- HTTP 연결 요청
클라이언트가 일반적인 HTTP 요청을 보내되, Upgrade: websocket 헤더를 포함시킴 → 업그레이드 요청 - 프로토콜 업그레이드
서버가 WebSocket 요청을 수락하면, 프로토콜이 HTTP → WebSocket으로 전환됨 - 지속적인 통신
연결이 유지되며 서버와 클라이언트가 서로 실시간으로 메시지를 주고받을 수 있음 - 연결 종료
명시적으로 연결을 닫기 전까지는 계속 연결이 유지됨
4. 웹소켓의 장점
- 실시간 데이터 전송 (지연 최소화)
- 서버 → 클라이언트 푸시 가능
- REST 방식 대비 네트워크 트래픽 감소 (헤더 반복 없음)
- 연결 유지로 성능 향상
5. 웹소켓의 단점
- 연결 상태 관리가 필요 (끊김 감지 등)
- 일반적인 HTTP 서버와 다르게 별도 설정 필요
- 브라우저/네트워크 환경에 따라 방화벽 등 제약 가능
6. 언제 사용하나?
- 실시간 채팅
- 실시간 주식/코인 시세
- 실시간 알림/푸시 시스템
- 온라인 게임, 협업 앱 등
요약
- WebSocket은 실시간 양방향 통신을 위한 프로토콜
- 연결을 유지하면서 지속적인 데이터 주고받기 가능
- 실시간 서비스 구현에 적합 (채팅, 시세, 게임 등)