HTML5 Web Socket

-- HTML5 2012. 7. 30. 11:26
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

실시간 (양방향) 통신을 위한 웹의 노력

 

한 작성자는 HTML5의 새로운 스펙 중에 사용자가 가장 흥미로워 한 것이 Canvas 라면 개발자가 가장 흥미로워 한 것은 바로 웹 소켓(Web Socket)이다라고했다.

 

WebSocket 이란?

 

컴퓨터 네트워크용 통신 규약의 하나이다. W3C IETF가 웹서버와 웹브라우저 간의 통신을 위한 규정을 정의한 쌍방향통신용기술규약이다.

 

WebSocket의 등장 배경

 

초기 웹은 탄생 목적은 문서 전달과 하이퍼링크를 통한 문서 연결이었다. 웹을위한 HTTP 프로토콜은 이러한 목적에 매우 부합하는 모델이다. 그러나시대가 변하고 환경이 발전할 수록 웹이 더 이상 문서공유에만 집중 할 수 없었다. 갈수록 동적인 표현과뛰어난 상호작용이 요구되었고 이로 인해 여러 새로운 기술이 탄생되었다. 플래시(플렉스), 자바애플릿,ActiveX, 실버라이트 등을 들 수 있다. 하지만 이들은 웹에서 화려한 동작과 뛰어난상호작용을 보장하지만 순수 웹 환경이 아니라 별도의 런타임을 플러그 인 형태로 브라우저에 설치해야 사용 가능하다.HTML5는 그 주요 목적 중 하나인, 플러그 인 없는 일관되고 표준화된 웹 응용환경이라는가치 하에 많은 참신한 스펙들이 개발되었다. 그 중 순수 웹 환경에서 실시간 양방향통신을 위한 스펙이바로 WebSocket이다.

 

웹의실시간(양방향) 통신을 위한 그 동안의 노력

 

DHTML, iframe, Ajax, Comet과 기술들이 등장했지만이 모든 것은 "폴링(Polling)" 방식이다. 즉 데이터 수신을 위해 서버가 클라이언트에게 전송해 주는 푸시(Push)방식이아니라 클라이언트가 서버에게 요청하는 폴링(Polling) 방식이다.

 

비교적 최적의 대안이었던 Comet 역시 무의미한 반복 요청을 피하기 위한 연결유지기법이 적용되었지만 일정 시간 이후에는 연결을 종료하고 다시 연결해야 한다. 그래서 Comet Long-Polling 이라 한다.

 

웹의진정한 실시간(양방향) 통신, WebSocket의 등장

 

WebSocket은 웹 서버와 웹 브라우저가 지속적으로 연결된 TCP 라인을 통해 실시간으로 데이터를 주고 받을 수 있도록 하는 HTML5의새로운 사양이다. 따라서 WebSocket을 이용하면 일반적인 TCP 소켓과 같이 연결지향 양방향 전이중 통신이 가능하다. 이와같은 특징으로 웹에서도 채팅, 게임, 실시간주식차트와 같은 실시간이 요구되는 응용프로그램의 개발을 한층 효과적으로 구현있게되었다.

 

기존통신방법과 WebSocket의 결정적 차이는?

 

지금까지 존재했던 통신방법과 WebSocket의 결정적인 차이는 프로토콜에 있다. WebSocket 프로토콜은 접속 확립에 HTTP를 사용하지만, 그 후의 통신은 WebSocket 독자의 프로토콜로 이루어진다. 또한 header가 상당히 작아overhead가 적은 특징이 있다. 장시간 접속을 전제로 하기 때문에, 접속한 상태라면 클라이언트나 서버로부터 데이터 송신이 가능하다. 더불어데이터의 송신과 수신에 각각 커넥션을 맺을 필요가 없어, 하나의 커넥션으로 데이터를 송수신 할 수 있다. 통신시에 지정되는 URLhttp://... 과 같은 형식이 아니라 ws://... 형식이된다.

 

WebSocket 소켓이 필요한 경우

 

  - 실시간 양방향 데이터 통신이 필요한 경우

  - 많은 수의 동시 접속자를 수용해야 하는 경우

  - 브라우저에서 TCP 기반의통신으로 확장해야 하는 경우

  - 클라우드 환경이나 웹을 넘어SOA로 확장해야 하는 경우




출처 : http://cafe.naver.com/buldon/4154

'-- HTML5' 카테고리의 다른 글

HTML5 Canvas  (0) 2015.07.01
Semantic HTML5 Page Layout  (0) 2012.09.06
HTML5 Server-Sent Events  (0) 2012.07.18
HTML5 Web Storage, Web SQL Database  (0) 2012.07.18
HTML5 autofocus, required  (0) 2012.07.18
posted by 어린왕자악꿍