Day 2 : WebSocket 기초와 실습
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
백엔드 개발자, 실시간 애플리케이션 개발자 (중간 수준)
핵심 요약
- WebSocket은 HTTP와 달리 지속적인 양방향 통신을 지원하며, 초기 HTTP 요청 후 연결 유지 가능
- STOMP는 WebSocket 위에서 메시지 라우팅, 구독/발행, 헤더 분리 등 표준화된 프로토콜 제공
- 순수 WebSocket은 성능에 유리하지만 직접 기능 구현 필요, STOMP over WebSocket은 기능 풍부하지만 오버헤드 존재
섹션별 세부 요약
1. HTTP Polling vs Long Polling 비교
- HTTP Polling은 클라이언트가 정기적으로 요청 보내며, 실시간성 낮음
- HTTP Long Polling은 데이터 생성 시 응답하며, 서버 부하 감소
- Long Polling은 실시간성 요구 시 유리하지만, WebSocket이나 SSE가 더 효율적
2. WebSocket 개념 및 특징
- WebSocket은 지속적인 연결 유지 가능, 요청-응답 모델 대체
- 초기 연결은 HTTP로 이루어짐, 이후 양방향 통신 가능
- 사용 예시: 채팅, 주식 시세, 온라인 게임 등
3. Spring WebSocket 구현 예시
- ChatWebSocketHandler 클래스에서 세션 관리 및 메시지 처리
- ObjectMapper를 통해 JSON 문자열 <-> Java 객체 변환
- ConcurrentHashMap 및 synchronizedSet으로 동시성 문제 해결
4. STOMP 프로토콜 특징
- 메시지 구조: COMMAND, HEADER, BODY로 구성
- 명령어:
SEND
,SUBSCRIBE
,CONNECT
등 - 브로커 자동 라우팅, 헤더 기반 인증/타입 관리 가능
5. 순수 WebSocket vs STOMP over WebSocket 비교
- 순수 WebSocket
- 성능 우수, 오버헤드 최소
- 직접 기능 구현 필요 (pub/sub, ACK 등)
- STOMP over WebSocket
- 기능 풍부 (구독/발행, 헤더, 라우팅 등)
- Spring 통합 지원, 개발 생산성 향상
결론
- 성능이 우선이면 순수 WebSocket, 기능 확장성이 중요하면 STOMP over WebSocket 선택
- Spring을 활용해 채팅 시스템, 알림 서비스 등 실시간 기능 구현 가능
- STOMP는 메시지 라우팅, 구독 관리를 자동화해 유지보수성 향상