WebSocket 기초와 실습: STOMP 및 실시간 통신 가이드
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

Day 2 : WebSocket 기초와 실습

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

백엔드 개발자, 실시간 애플리케이션 개발자 (중간 수준)

핵심 요약

  • WebSocketHTTP와 달리 지속적인 양방향 통신을 지원하며, 초기 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 객체 변환
  • ConcurrentHashMapsynchronizedSet으로 동시성 문제 해결

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메시지 라우팅, 구독 관리를 자동화해 유지보수성 향상