본문 바로가기
개발자

Short Polling vs Long Polling

by A6K 2023. 12. 29.

'폴링(Polling)'이란 클라이언트가 서버에게 주기적으로 새로운 데이터나 이벤트가 있는지 주기적으로 확인하는 요청을  전송하는 것을 의미한다. HTTP 요청은 클라이언트가 요청을 보내고 서버가 응답을 주는 형태다. 하지만 클라이언트가 원하는 정보가 아직 서버에 없는 경우 바로 응답으로 돌려주지 못 할 수 있는데 이럴 때 폴링 기법을 이용해서 응답을 기다릴 수 있다.

Short Polling

짧은 폴링(Short Polling)은 가장 간단하게 생각할 수 있는 폴링 방식이다.

클라이언트는 서버에게 이벤트나 데이터를 달라는 요청(Request)을 보낸다. 요청을 받은 서버는 데이터나 이벤트가 있으면 담아서 응답으로 보내준다. 만약 데이터나 이벤트가 없으면 빈 응답을 바로 리턴해준다. 빈 응답을 받은 클라이언트는 일정 시간동안(Interval) 기다렸다가 다음 요청을 서버에게 전송한다.

이런 동작이 반복되는 것을 짧은 폴링(Short Polling)이라고 한다.

짧은 폴링을 사용하는 경우 서버는 단순히 요청에 대한 응답만 전송하고, 반복에 대한 내용은 클라이언트가 담당한다. 만약 클라이언트가 재요청 인터벌을 짧게 가져갈 경우 네트워크를 통해 전달되는 요청과 응답의 숫자가 많아질 수 있으며 서버에도 무리를 줄 수 있다.

Long Polling

긴 폴링(Long Polling)은 약간 다른 방식의 폴링이다.

클라이언트가 서버에게 이벤트나 데이터를 달라는 요청을 보낸다. 서버는 보내줄 이벤트나 데이터가 없을 경우 바로 빈 응답을 리턴하지 않고 데이터가 생기거나 이벤트가 발생할 때까지 기다린다. 보내줄 이벤트가 발생하면 그 때 응답을 만들어서 클라이언트에게 전달한다. 클라이언트는 서버가 응답을 줄 때까지 기다렸다가 응답을 받아 이벤트나 데이터를 처리하면 된다.

긴 폴링의 경우 클라이언트가 불필요하게 많은 요청을 생성하지 않을 수 있다. 하지만 서버쪽의 로직이 다소 복잡해지고, 자원도 많이 사용할 수 있다.

댓글