Study

Websocket 정리

kinim329 2026. 4. 19. 23:51

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