Websocket이란
Websocket은 클라이언트와 서버가 한 번 연결을 맺은 뒤, 그 연결을 유지하면서 양방향으로 데이터를 주고받을 수 있는 통신방식이다.
기존 HTTP는 요청과 응답이 끝나면 연결이 종료되는 방식이지만, WebSocket은 연결을 유지하기 때문에 서버도 필요할 때 바로 클라이언트에게 데이터를 보낼 수 있다.
즉, Websocket은 실시간 통신이 필요한 환경에서 많이 사용된다.
왜 사용하는가?
일반 HTTP 방식에서는 실시간 데이터를 처리하려면 클라이언트가 주기적으로 서버에 요청을 보내야 한다.
예를 들어서 채팅 기능에서 새 메시지가 왔는지 확인하려면 몇 초마다 계속 요청을 보내야 한다.
이 방식은 불필요한 요청이 많아지고, 실시간성이 떨어질 수 있으며, 네트워크 자원 낭비가 있을 수 있다.
Websocket은 한 번 연결을 만든 뒤 계속 유지하므로 이런 비효율을 줄이고 빠른 실시간 데이터 전달이 가능하다.
동작 방식
Websocket은 처음에는 HTTP 요청으로 연결을 시작한다. 이 과정을 Handshake라고 한다.
그 이후 서버가 WebSocket 연결로 전환을 승인하면 기존 HTTP 연결이 Websocket 연결로 업그레이드 된다.
이후에는 양방향으로 데이터 전송이 가능하다.
HTTP와의 차이
HTTP
- 요청과 응답 기반
- 보통 클라이언트가 먼저 요청해야 서버가 응답 가능
- 연결이 지속되지 않음
- 실시간 통신에 비효율적일 수 있음
Websocket
- 연결을 한 번 맺고 유지
- 양방향 통신 가능
- 서버도 클라이언트에게 바로 데이터 전송 가능
- 실시간 서비스에 적합
사용 예시
Websocket은 다음과 같은 기능에서 자주 사용된다.
- 채팅 서비스
- 온/오프라인 확인 섭스
- 실시간 알림
- 게임
그리고 직접 구현한 사례로는 온/오프라인 상태 확인 서비스에 사용한 경험이 있다.
사용자가 접속하면 WebSocket 연결이 생성되고, 연결이 유지되는 동안은 온라인 상태로 판단한다.
연결이 끊어지면 즉시 오프라인으로 처리할 수 있어 별도의 주기적인 요청 없이 실시간 상태 관리가 가능했다.
장점
- 실시간 양방향 통신 가능
- 불필요한 HTTP 요청 감소
- 빠른 데이터 전단
- 채팅, 알림, 시세 반영 등에 적합
단점
- 연결을 계속 유지해야 하므로 서버 자원을 사용한다
- 구현이 HTTP보다 복잡할 수 있다
- 대규모 환경에서는 연결 관리가 중요하다
- 단순 조회 기능에서는 오히려 과할 수 있다
정리
Websocket의 핵심은 연결을 유지하면서 서버가 먼저 데이터를 보낼 수 있다는 점이다.
온/오프라인 상태 확인 기능에 적용하면서 HTTP처럼 주기적인 요청 없이도 연결 상태만으로 사용자 상태를 판단할 수 있다는 것을 확인했다.
Websocket은 모든 기능에 적합한 것은 아니면, 연결을 지속적으로 유지해야 하기 때문에 조회위주의 API보다는 실시간성이 중요한 기능에서 사용하는것이 적절하다는 것을 느꼈다.
'Study' 카테고리의 다른 글
| Redis Pub/Sub (0) | 2026.04.22 |
|---|---|
| 헥사고날 아키텍처 vs 레이어드 아키텍처 (1) | 2026.04.21 |
| 그래프 표현, DFS/BFS, 최단경로 (0) | 2026.04.17 |
| 서비스 간 통신 방법 (0) | 2026.04.16 |
| 분산 트랜잭션과 데이터 일관성 (0) | 2026.04.14 |