본문 바로가기
Web

WebSocket 개념

by IsBerry 2019. 3. 3.
반응형


WebSocket 개념

 

 



WebSocket 이란?

  : 서버 - 클라이언트 간의 효율적인 양방향 통신을 실현하기 위한 통신 프로토콜

    HTTP의 단점을 보완하기 위해 등장함.

    하나의 HTTP접속으로 양방향 메시지를 자유롭게 주고받을 수 있다



장점

 : 기존 HTTP는 Client가 요청을 보내지 않아도 Server가 데이터를 보내주는 기능의 구현에 있어서 

   많은 고민이 있었음 -> HTTP의 근본적인 메커니즘 탓으로 인한 한계 (Request/Response)


    HTTP에 지나치게 많은 헤더(kByte)를 가지고있지만,

    WebSocket은 Byte단위까지 압축할 수 있어 네트워크 과부화 (오버헤드)를 줄일 수 있다.

          


   * HTTP를 완전히 대체하는 것이 아니라 HTTP통신이 적합하지 않은 메시징 등의 지연시간이 적고 

     트래픽이 높은 환경에서 유용하게 사용



작동원리

 WebSocket 프로토콜은 접속 확립에(HandShake) HTTP를 사용하지만 그 후 통신은 독자적으로 이뤄짐

    

WebSocket API

 : W3C에서 관리함. 4개의 이벤트 핸들러와 2개의 함수로 구성됨.

onopen : 웹소켓 열릴 시 호출

onmessage : 메시지 도착시 호출

onerror : 에러 발생시 호출

onclose : 웹소켓 닫히면 호출

send : 메시지 전송

close : 웹소켓 닫기

* WebSocket은 아주 간단한 기능들만 제공하기 때문에 SockJS, SockIO같은 오픈 소스 라이브러리를 많이

      사용하고 있으며, 메시지 포멧 또한 STOMP 프로토콜을 같이 이용함.

   

Socket.io

 : JavaScript를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있도록 한 기술

   WebSocket, FlashSocket, Ajax Long Polling, Ajax Multi part Streaming, JSON polling을 하나의 API로 추상화 한 것.

   Node.js모듈


* 웹소켓은 요청을 위해 새로 연결을 만들 필요가 없고, 추가적인 헤더가 필요없기 때문에 Long Polling방식에 비해 효율적이다.


https://seolhun.github.io/Network-WhatIsTheWebSocket/

  

반응형