1. polling
클라이언트가 http request를 서버로 계속 보내서 이벤트 내용을 전달 받는 방식
클라이언트가 계속적으로 request를 보내기 때문에
-> 클라이언트가 많아지면 서버의 부담이 급증함
http request connection을 맺고 끊는 것 자체가 부담스러운 방식
실시간 정도의 빠른 응답을 기대하기 어려움
http 오버헤드가 발생
일정하게 갱신되는 서버 데이터의 경우 유용하게 사용
주기적으로 클라이언트가 서버로 HTTP 요청을 보내고, 즉시 응답을 받는 방식으로 실시간성을 구현하는 기법이다. 서버가 클라이언트에 제공할 데이터가 없어도 클라이언트는 그 사실을 알 수 없으므로, 오버헤드가 발생한다.
2. long polling
서버에서 접속 시간을 길게하는 방식
클라이언트에서 서버로 http request 전송
서버 응답 데이터가 없으면 기다림, 이벤트가 존재하면 그 순간 response 메세지를 전달 후 연결 해제
클라이언트에서 다시 http request를 전송하여 서버의 다음 이벤트 대기
polling 방식보다 서버 부담이 줄지만, 이벤트 시간 간격이 좁다면 차이가 없음
다수의 클라이언트에게 이벤트가 동시에 발생하면 서버 부담 급증'
HTTP 폴링 방식과 비슷하지만, 서버가 요청에 대한 연결을 즉시 닫고 응답하지 않고, 일정시간동안 연결을 열어두는 기법이다. 연결이 열려있는 동안 서버가 클라이언트로 제공할 데이터가 발생하면 전송할 수 있어, 그냥 폴링 방식보다는 오버헤드가 비교적 적다.
-> 메세지 양 자체가 많을 경우 일반 폴링과 비교하여 큰 성능 향상은 없다.
3. SSE (Server-Sent-Events)
서버의 데이터를 실시간, 지속적으로 Streaming하는 기술
4. websocket
양방향 채널을 이용한 양방향 통신
출처: https://hudi.blog/websocket-with-nodejs/
https://velog.io/@dev_jazziron/Polling-Long-Polling-SSE-WebSocket