깨알지식 - 개발
폴링(polling)이란? (comet)
quokkalover
2021. 9. 25. 15:09
폴링은 리얼타임 웹을 위한 기법으로, 일정한 주기(특정한 시간)을 가지고 서버와 응답을 주고 받는 방식을 말한다.
이렇게 서버와 응답을 주고 받는 이유는 웹이 태생 자체부터 실시간을 위해 필수적인 persistent connection이 불가능하기 때문이다.
클라이언트가 서버에 특정 요청을 하면 서버가 응답해준 후 연결이 끊어지는게 HTTP의 특징이기 때문이다.
따라서 실시간 서비스라고 불리는 서비스들 대부분이 실시간이 아니다. 실시간으로 변하는 야구 중계 같은 경우, 브라우저에서 5초 단위로 서버에 요청을 보내 업데이트 하는 방식으로 구현된다.
폴링을 위키피디아식으로 다시 정의해보면
폴링이란 하나의 장치(혹은 프로그램)가 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치 (또는 프로그램)의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식을 말한다.
Loop()문 내에서 반복적으로 외부 입력을 감시하는 문법으로 구현된다.
하지만 폴링에는 문제점이 있다.
1. 폴링의 주기가 짧으면 서버의 성능에 부담이 간다. (오버헤드/트래픽)
2. 주기가 길면 실시간성이 떨어진다.
해결 방법(다른 comet)
comet을 구현 (실시간 웹을 구현하기 위해 만들어진 기술들을 지칭)
- 롱폴링 기법 : 서버측에서 접속을 열어두는 시간을 길게 한다. 이벤트가 발생하면 바로 응답이 이루어짐.
- 스트리밍 방식 : 웹접속을 계속 열어두고 발생할때마다 부분적으로 브라우저에 응답