본문 바로가기
CS

웹 브라우저 통신 방법(Polling, Long Polling, SSE, Socket)

by 순원이 2024. 5. 21.

Polling

일정 주기를 가지고 서버의 API를 호출하는 방법이다.
예를 들어, 클라이언트에서 5초마다 한 번씩 알림 목록을 호출한다면, 업데이트 내역이 5초마다 갱신되며 변경사항을 적용할 수 있다. 이 방식은 기본적인 HTTP통신을 기반으로 하기 때문에 호환성이 좋다는 장점이 있다.

당연하지만 업데이트 주기가 길다면 실시간으로 데이터가 갱신되지 않는다.
업데이트 주기가 짧다면 갱신 사항이 없음에도 서버에 요청이 들어와 불 필요한 서버 부하가 생긴다.

 

Long-Polling

롱 폴링은 일반 폴링보다 더 나은 방식이다.
Polling과 비슷하나, Client의 요청에 대해서 서버가 일정시간 동안 기다렸다가 서버 이벤트가 생기면 서버가 응답하고 Client가 곧바로 request를 보내는 방식이다.

서버가 요청을 받으면 바로 응답을 보내는 것이 아니라 이벤트가 발생하면 응답을 보낸다.
전체적인 요청/응답량이 줄어들지만 수 많은 클라이언트와 연결되어 있고, 이벤트 발생(데이터 변경)이 빈번하다면 오히려 서버 쪽에서 부담이 될 수 있다.

 

SSE(Server Sent Event)

  • 단방향 비동기 데이터 전송(서버 -> 클라이언트)
  • 지속적인 HTTP 연결
  • WebSocket에 비해 가벼움

WebSocket

  • 기존 단반향 HTTP와 다르게 양방향 통신을 제공하기 위해 개발된 프로트콜
  • 한 번 연결이 수립되면 클라이언트와 서버 모두 자유롭게 데이터를 보낼 수 있다.
  • HTTP를 이용해서 연결을 수립하면 연결이 된 이후에도 연결을 할 때 사용했던 포트인 80과 443포트 사용.
  • HTTP 규격인 CORS 적용이나 인증등의 과정을 동일하게 적용할 수 있다.
  • TCP에 의존

 

Application Layer: STOMP
----------------------------
Transport Layer: WebSocket
----------------------------

Transport Layer: TCP


응용계층 프로트콜

HTTP, STOMP, STMP, 

전송계층 프로트콜
TCP, WebSocker