클라이언트에서 서버 데이터 변경 사항들을 실시간으로 반영하기 위해 폴링(Polling), 롱 폴링(long Polling) 등의
방식들을 사용한다.
폴링(Polling)
하나의 장치(또는 프로그램)이 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치의 상태를 주기적으로 검사하여
일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식을 말한다.
간단하게 얘기하면 클라이언트가 일정 주기로 서버에게 필요한 데이터를 요청하고 서버는 이에 대한 응답을 주는 방식이다.
이는 AJAX polling 이라고도 불리는데 주로 AJAX 호출을 사용하기 때문이다.
폴링의 문제점
1. 폴링의 주기가 짧으면(데이터 요청 주기) 서버의 성능에 부담이 간다.
2. 주기가 길면 실시간성이 떨어진다.
롱 폴링(long Polling)
요청하는 즉시 응답을 주는 폴링 방식과 달리 롱 폴링은 클라이언트의 요청에 대해 서버는 즉시 응답해주지 않는다.
클라이언트가 요청을 보냈을 때 서버는 응답해주지 않고 특정 이벤트가 발생하거나 타임아웃(timeout)이 발생하면
응답을 전달한다. 전달받은 클라이언트는 다시 서버에게 데이터를 요청한다.
쉽게 말해 클라이언트의 요청에 대해 서버는 저장하고 있다가 서버에서 이벤트가 발생했을 때 클라이언트에게
응답을 해주는 방식이다.
웹 소켓(Web Socket)
클라이언트(사용자 웹브라우저)와 서버 사이에 양방향 통신을 위한 연결 채널을 구성한다.
클라이언트와 서버 사이에 웹소켓이 열리면 서버 또는 사용자 둘중 하나가 세션을 닫을 때까지
언제든지 통신을 할 수 있다.
클라이언트만 서버로 요청을 보내는 방식이 아닌 서버도 클라이언트로 요청을 보낼 수 있어
실시간 통신이 필요한 경우에 사용한다.