레이블이 Mobild Web인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Mobild Web인 게시물을 표시합니다. 모든 게시물 표시

2011년 11월 8일 화요일

HTML5 Web Socket

  • 등장 배경
 기존 Web 통신은 모두 클라이언트(Browser) 의 요청 --> Server 의 응답 형식이었다. Polling 방식 + 단방향 통신으로 IO 를 구현해온 것이다. 그래서 Web 환경에서 채팅 기능을 구현하려면 클라이언트는 일정 주기 별로 계속 서버에 메시지 도착 유무를 판단하기 위하여 Polling 해야 한다.
 HTML5 에서는 Established 된 TCP 연결을 통해서 양방향이 동시 통신을 할 수 있게 되었다. 이것을 프로그래머 입장에서 좀 더 귀가 트이게 이야기 하자면, Mobile Web application 에서 PUSH 기능을 쓸 수 있게 된 것이다.
  • 성능의 향상
 기존 Web 통신에서 그나마 쓸만한 것이 Ajax 이었다. 만약 똑같은 기능을 Web socket 과 Ajax 로 구현하면 그 성능 차이는 어떨까?

 인터넷에서 조금만 구글링 해보면 Performance 테스트한 결과들을 쉽게 볼 수 있는데, 정량적인 수치를 단언하긴 힘들지만 일반적으로 30배 이상 속도가 빠르다. 그럴 수밖에 없는 것이, Ajax 는 호출 할 때마다 연결을 새롭게 해야 한다. 그렇기 때문에 송신해야 하는 Data 는 HTTP 헤더 정보를 포함해서, 항상 더 많다. 반면에 Web socket 은 Established 된 TCP 연결 상에서 필요한 Data 만 바로 보내면 되기 때문에, 클라이언트와 Server 사이의 대역폭을 훨씬 효율적으로 사용할 수 있게 된다.
  • 구현하는 방법
 Javascript 내에서 간략하게 Web socket 기능을 구현해서 쓸 수 있다. 객체를 만들고 Event Handler 를 부착하기만 하면 된다.

<script lang="javascript">    var ws = new WebSocket("http://yourdomain.com");
    // PUSH Message Handler    ws.onmessage = function(msg) {                                                        alert(msg.data);                                                   }    // Connection Established    ws.onopen = function(msg) {                                                  alert("Connection Established");                                             }
    // Connection Closed    ws.onclose = function(msg) {                                                   alert("Connetion Ended");                                              }</script>