Polling, SSE, WebSocket

00_8_3·2022년 6월 29일
0

Polling, SSE, WebSocket

Polling (client push)

기본적인 아이디어로 클라이언트가 반복적으로 Poll을 서버로 날린다.
클라이언트가 Req를 요청 하고 서버가 Res 하기를 기다립니다.
만약 데이터가 없다면 빈 Res를 반환합니다.

Polling의 문제로는 클라이언트가 지속적으로 서버에 새 데이터를 요청 해야한다는 것이다.
결과적으로 많은 빈 Res가 HTTP의 오버헤드를 일으킵니다.

HTTP 3-way-handshake의 문제점

Long Polling (client push)

위의 Polling의 문제점을 보완하기 위해 나왔다.
클라이언트가 서버의 Res가 TimeOut 될때 까지 기다렸다가 다시 Req을 한다.
결국 비슷하고 똑같이 오버헤드가 일어난다.

WebSocket

http 통신 후 WebSocket handshake를 통해 전이중 통신을 제공한다.

Server Sent Events (server push)

서버에서 클라로 데이터를 전송할 때 사용한다.

  • Content-Type : 'text/event-stream' //이벤트 스트림
  • Connection : 'keep-alive' // SSE 사용 시 커넥션 유지
  • Cache-Control : 'no-cache' //

SSE와 WebSocket의 차이점

SocketSSE
통신양방향일방향
실시간yesyes
데이터형태Binary,UTF-8UTF-8
최대동시접속서버에 따라HTTP1.1 브라우저당 최대 6개 / HTTP2.0 기본 100개
프로토콜WebSocketHTTP
베터리소모량적음
방화벽 친화적NoYES

사용처

접속되어 있는 유저에게 간단한 푸시를 줘야한다면
SSE를 사용하자.

페이스북 피드, 노티
내 생각엔 타겟 광고에 쓰이면 어떨가 싶다.

출처

https://codeburst.io/polling-vs-sse-vs-websocket-how-to-choose-the-right-one-1859e4e13bd9

https://developer.ibm.com/articles/wa-http-server-push-with-websocket-sse/

0개의 댓글