폴링(polling)

YES31·2023년 3월 10일
0

TIL

목록 보기
31/35
post-thumbnail

Polling

일정한 주기(특정한 시간)을 가지고 서버와 응답을 주고 받는 방식

서버와 응답을 주고 받는 이유는 웹이 태생 자체부터 실시간으로 위해 필수적인 HTTP 지속적 연결 상태 (HTTP persistent connection)가 불가능하기 때문이다.

클라이언트가 서버에 특정 요청을 하면 서버가 응답해준 후 연결이 끊어지는게 HTTP의 특징이기 때문에, 실제 실시간이라 불리는 서비스 대부분이 실시간 연결이 아니다.


위키에서는 다음과 같이 설명하고 있다.
일정한 조건을 만족할 때까지 Loop()문 내에서 반복적으로 외부 입력을 감시하는 문법으로 구현이 된다. 하지만 polling에는 여러 단점들이 있다.

  • real-time 통신에서는 언제 통신이 발생할지 예측이 불가능하다.
  • 불필요한 request와 connection을 생성한다.
  • 상단의 사진을 보면, 이벤트가 없는데도 요청을 한다. 그러면 이벤트 발생 후 응답을 받을 때까지 대기 간극이 생긴다.
  • real-time 통신이라고 하기 애매할 정도의 실시간성을 보장한다.
  • 폴링 주기가 짧을 때 : 서버의 성능에 부담 (오버헤드/트래픽)
  • 폴링 주기가 길 때 : 실시간성이 떨어짐

해결방법 🛹

  • 롱폴링 기법 : 서버측에서 접속을 열어두는 시간을 길게 한다. 이벤트가 발생하면 바로 응답이 이루어짐.
  • 스트리밍 방식 : 웹 접속을 계속 열어두고 발생할때마다 부분적으로 브라우저에 응답.
profile
🏀 주니어 개발자

0개의 댓글