상세 컨텐츠

본문 제목

[Server] Server Push 개념

개발/Tools

by 대충고양이짤 2015. 2. 27. 12:15

본문

Server Push란?


서버가 클라이언트(브라우저)로 데이터를 전송해 주는 통신 방식



기존의 HTTP 프로토콜을 이용한 웹 통신은 단방향 통신이었다. 클라이언트(브라우저)에서 요청이 들어와야만 서버가 응답해 주고 세션을 끊는 구조로, 서버에서 먼저 능동적으로 클라이언트에게 데이터를 전달할 수 없었다. 하지만 실시간으로 사용자와 상호작용하는 웹 서비스를 선호하는 사용자가 증가하면서 Server Push 기술의 필요성이 대두되었다. 



기존 HTTP 통신 

Server Push 

  • 라이언트에서 일정한 주기로 서버에 질의

  • 불필요한 서버 및 네트워크 부하 발생

  • 단방향성 통신

  • 정적인 웹

  • 서버에서 클라이언트로 데이터를 전송

  • 서버 비용 및 네트워크 부하 감소

  • 양방향성 통신

  • 동적인 웹 



웹 통신 환경에서 양방향 통신, 즉 Server Push를 구현하기 위해 지금까지는 우회적인 기법의 실시간 통신 방식인 COMET을 사용해왔고, HTML5의 등장으로 SSE(Server-Sent Events)와 진정한 양방향 통신이 가능한 WebSocket이 등장했다.




발전 순서 : Hidden IFRAME -> AJAX Polling -> AJAX Long-Polling -> SSE, Websocket





Server Push 통신 방식



친절한 그림 설명은 링크 참조.




1.Ajax Polling

  • 일정 주기로 서버에 요청을 보내어 서버의 이벤트를 받는 방식.


2.Ajax Long-Polling

  • 요청에 대한 응답을 바로 하지 않고 일정 시간 대기하다가 이벤트가 발생한 경우에 응답을 하고, 클라이언트는 바로 재요청을 보내는 방식
  • 데이터 업데이트가 빈번한 경우네는 Polling에 비해 성능상 이점이 크지 않음


3.Server-Sent Events(SSE)

  • 브라우저에 Push만 가능
  • 접속 처리 같은 대부분의 저수준 처리가 자동을 됨
  • HTTP 프로토콜 사용
  • HTML과 JavaScript 만으로 구현 가능
  • IE 지원하지 않음


4.WebSocket

  • 클라이언트와 서버 간 양방향 통신
  • 불필요한 요청/응답 헤더 데이터가 존재하지 않음
  • 별도의 프로토콜 사용 - HTTP 프로토콜로 handshake 후 WebSocket 프로토콜 사용



브라우저 지원 현황 : http://caniuse.com/





참고 사이트











'개발 > Tools' 카테고리의 다른 글

[Eclipse][Error] The import org.apache.commons cannot be resolved  (0) 2015.11.23
NFC, RFID, 바코드, 블루투스, MST  (0) 2015.05.18
[MAVEN] Maven 개념 정리  (0) 2015.02.05
[Security] 무차별 대입 공격  (0) 2015.01.29
JSON 이란?  (0) 2015.01.21

관련글 더보기

댓글 영역