네트워크
WebSocket
다른 이름: 웹소켓
정의
HTTP 핸드셰이크 후 TCP 연결 유지, 양방향 실시간 통신 프로토콜. ws:// 또는 wss:// (암호화). 폴링 대비 낮은 지연, 적은 오버헤드. 채팅, 실시간 알림, 게임, 주식 시세. Socket.IO는 WebSocket + 폴백 라이브러리
상세 설명
기술 스펙
- Handshake: HTTP Upgrade 요청 → 101 Switching Protocols
- 프로토콜: ws:// (80), wss:// (443, TLS 암호화)
- Frame: 메시지 단위 (텍스트/바이너리)
- Ping/Pong: 연결 유지 확인
- Close: 1000 (정상), 1001 (Going Away), 1002 (Protocol Error)
- 메시지: Text (UTF-8) 또는 Binary
실무 활용
- 채팅: Slack, Discord, WhatsApp Web
- 실시간 알림: 소셜 미디어, 이메일
- 게임: 멀티플레이어 동기화
- 주식 시세: 실시간 가격 업데이트
- 협업 도구: Google Docs 동시 편집
장점
- 낮은 지연: 폴링 대비 즉각 응답
- 적은 오버헤드: 헤더 재전송 없음
- 양방향: 서버→클라이언트 푸시 가능
- 실시간: 연결 유지로 즉시 전송
단점 및 제약
- 연결 유지: 서버 리소스 소비 (메모리, 파일 디스크립터)
- Proxy/방화벽: 일부 차단 (80/443 포트 필요)
- HTTP 캐싱 불가: CDN 활용 어려움
- 복잡한 상태 관리: 재연결, 타임아웃 처리
호환성
모든 모던 브라우저, Node.js, Python, Java, C++ 라이브러리
표준 정보
표준화 기구: IETF RFC 6455
출시 연도: 2011년