WebSocket 이란?
클라이언트와 서버 간의 단일 TCP 연결을 통해 양방향 실시간 통신이 가능하게 하는 통신 프로토콜.
클라이언트 또는 서버 중 하나가 연결을 중단하기 전까지 통신이 지속됨
- 기술 채택 이유 → 실시간 처리를 요구하는 시스템에서 WebSocket을 이용하여 해결 가능
- 일반적으로 서버 통신은 HTTP를 통해 이뤄짐 → 서버로 요청이 와야지만 응답을 줄 수 있음
- 채팅 또는 금융 데이터, 주식 가격 등 실시간 변동성이 있는 데이터를 클라이언트가 확인하기 위해서 계속 HTTP 요청을 보내고 받아야함 → 동일한 요청을 매번 보내는 게 매우 비효율적임
WebSocket | HTTP | |
방식 | 1번 연결 이후 연결 중단 전까지 자유롭게 메시지 전송 방식, 양방향 통신 | 클라이언트 요청을 보내야 응답하는 방식, 단방향 통신 |
연결 상태 | 연결성 | 비연결성 |
- WebSocket 연결 과정
- handshaker : HTTP 요청/응답으로 WebSocket 연결 설정
- 클라이언트가 서버 측으로 WebSocket 연결을 요청(HTTP 헤더에 Upgrade와 Connection 필드를 포함하여 WebSocket으로 업그레이드 요청)
- 서버 HTTP 상태코드 101(Switching Protocols) 응답을 받아 연결 확인 - 연결 유지 : 양방향 데이터 전송
- 연결 이후에는 서버는 클라어언트 요청 없이도 데이터 전송 및 응답 가능
- 클라이언트는 서버로 데이터 전송 가능(데이터는 프레임 단위 전송)
- TCP의 Keep-Alive 기능으로 장시간 연결 상태 유지 가능 - 프레임 기반 데이터 전송 : 텍스트 또는 바이너리 데이터 실시간 송수신 가능
- 텍스트 메시지 전송 시, 이벤트 기반 통신으로 데이터 처리됨 - 연결 종료 : 클라이언트 또는 서버에서 연결을 끊고 종료
- handshaker : HTTP 요청/응답으로 WebSocket 연결 설정
'팀프로젝트' 카테고리의 다른 글
웹소켓/stomp에서 jmeter 성능 테스트 (0) | 2025.04.16 |
---|---|
RabbitMQ to Service 시퀀스 설계 (0) | 2025.03.14 |
DDD Aggregate 관점에서 비즈니스 시나리오 (0) | 2025.03.13 |
MSA와 DDD 적용하여 프로젝트 구성하기 위한 이해 필요 (0) | 2025.03.12 |
[대규모 AI 시스템 프로젝트] 요구사항 파악 및 초기 세팅 (0) | 2025.03.11 |