일반적으로 컴퓨터 사이의 소통방식들은 HTTP 기반이다.
EX) REST API, SOAP, GraphQL, gRPC..
HTTP, 특히 HTTP/1.1 이하에서는 클라이언트가 서버에게 요청을 보내고 서버가 그에 응하여 응답을 보내는 식으로의 “단방향 소통”이 이루어진다.
서버가 클라이언트에게 메세지를 보내는 건 클라이언트의 요청에 응답을 할 때 뿐이다.
HTTP/1.1 이하에서는 클라이언트의 요청 없이는 서버에서 메시지를 보내지 못한다.
일반적인 기능들은 이러한 단방향 방식으로 구현이 가능하지만, 다른 방식이 필요할 때가 있다.
EX) 채팅 앱..
HTTP를 사용하여 이 문제를 해결하고자 한다면,
Polling 이라는 방법이 있다.
클라이언트가 주기적으로 서버에 요청을 보내서 상대방이 새 챗을 보냈는지 확인하는 것
서버는 업데이트가 있으면 있다는 응답을, 없으면 없다는 응답을 바로 보낸다.
Polling 방법에는 두 가지 문제점이 있다.
요청을 보내는 주기 만큼의 지연이 발생할 수 있다.
서버가 가지고 있는 상태 변화에 즉각적으로 반응하지 못한다.
계속해서 불필요한 요청들이 보내진다.
요청의 주기가 짧다면 반응속도는 빨라지겠지만, 트래픽의 낭비는 더 심해질 것이다.