우당탕탕 개발일지

🔌 통신방식 - 폴링(Polling), 스트리밍(Streaming), SSE 본문

Network

🔌 통신방식 - 폴링(Polling), 스트리밍(Streaming), SSE

kyunge_ev 2022. 12. 19. 09:15

💡 폴링(Polling) 통신방식

클라이언트가 n초 간격으로 request를 서버로 계속 보내서 response를 전달받는 방식

Shot Polling

  • 서버측에서 어떤일이 있던 없던 그 즉시 현재 상태에 대해 응답

Long Polling

  • 요청을 받으면 응답을 미루고 서버측에서 보내온 요청에 대한 응답이 있을 때 클라이언트에게 응답

장점

  • 비교적 구현이 쉽다.

단점

  • 클라이언트는 계속해서 서버측으로 request하여 응답이 있는지 확인해야한다.
  • header가 매우 무거운 프로토콜인 단발성 통신 HTTP로 해당 프로토콜로 서버측에 요청을 계속 보내면 서버의 부담이 증가한다.
  • ‘n초’ 해당 간격을 늘리면 실시간성 요청/응답으로 보기 어렵다.

💡 스트리밍(Streaming) 통신방식

- 오직 한번의 요청과 하나의 연결만은 유지하는 통신방식
- 브라우저가 서버에 요청을 보내면 서버는 연결을 통해 주기적으로 데이터를 보내되 연결은 유지

💡 SSE(Server Sent Event) 통신방식

- HTML5의 표준으로 서버로부터 실시간 데이터를 받을 수 있는 읽기전용 API와 패턴을 정의
👉 프로토콜을 사용하지 않고 HTTP를 사용
- 숏/롱 폴링, HTTP 스트링밍을 모두 지원
- 단방향 통신을 수행
- HTTP body를 SSE를 위한 특정 포멧으로 작성해야함 → application/event-stream