학습 배경: 이전에는 websocket이 실시간 통신 구현에 필수라고 생각했는데, 피어세션이랑 기획 공유 과정에서 다른 방법도 있다는 걸 알게 됨 + 웹소켓 등장 배경이 궁금해짐
→ 클라이언트→서버 단방향 통신 기술 (클라이언트는 요청만 하고 서버는 대답만 함)
→ WebSocket 기술 등장 이전에는 실시간 트릭을 사용해서 HTTP도 실시간처럼 작동하는 것처럼 보이게 만들었음
→ 헤드의 크기가 큰 편
가장 기본적인 데이터 처리방식으로, 특정 주기를 가지고 서버에 http request을 하는 방식이다
Polling방식은 언제 통신이 발생할 지 예측이 불가능하기 때문에 클라이언트가 평범한 http request를 일정한 주기로 서버에 요청하여 이벤트 내용을 전달받는 방식이다.
가장 간단한 방법이지만 언제 통신이 발생할지 예측이 불가능하다는 점에서 클라이언트가 계속적으로 요청을 하기때문에 클라이언트가 많아지면 서버의 부담이 급증하게된다. 실시간 통신이라고 부르기는 하지만 실시간 정도의 빠른 응답을 기대하기는 어렵다.
Polling과 비슷한 기법이나 실시간으로 데이터를 처리할 수 있는 방식이다
Long Polling은 클라이언트에서 서버로 일단 http request를 보내고 이 상태로 계속 기다리다가 서버에서 해당 클라이언트로 전달할 이벤트가 있다면 그 순간 response 메세지를 전달하며 연결이 종료된다. 해당 작업이 완료된 이후에는 클라이언트에서 곧바로 다시 http request를 보내 서버의 다음 이벤트를 기다리게 되는 작업 방식이다.
일반 Polling과 비교했을때 Polling보다는 서버의 부담이 줄어든다는 장점이 있지만 클라이언트에게 동시에 많은 양의 메세지가 올 경우 Polling과 별 차이가 없게되며, 다수의 클라이언트에게 동시에 이벤트가 발생될 경우에는 곧바로 다수의 클라이언트가 서버로 접속을 시도하게 되면서 서버의 부담이 급증하게 된다.