socket.io

socket.io

  • JavaScript를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있도록 한 기술
  • webSocket, AJAX Long Polling, Streaming 등등 관련 기술들을 하나의 API로 추상화한 것.
  • 브라우저와 웹 서버의 종류와 버전을 파악하여 가장 적합한 기술을 선택하여 사용하는 방식
  • 표준 기술이 아니고 Node.js의 모듈

왜 webSocket이 아니라 socket.io ?

  • webSocket 프로토콜은 지원하는 브라우저가 한정적이고 브라우저마다 지원하는 버전에도 차이가 있다. 하지만 socket.io의 경우 socket 관련 기술들을 하나의 Node.js 모듈로 구현한 것으로 브라우저마다 적합한 socket 기술을 적용해 준다.

WebSocket vs Socket.io

WebSocket Socket.io
TCP 연결 기반의 프로토콜 webSocket과 함께 작동하는 라이브러리
TCP 연결에서 양방향 통신을 제공 브라우저와 서버 통신을 기반으로 한 이벤트 제공
Proxy와 load balencer는 webSocket에선 지원하지 않음 proxy들과 balencer들의 존재 하에 통신이 설립
broadcasting을 지원하지 않음 broadcasting 지원
fallback 옵션이 없음 fallback 옵션을 지원

socket.io 장점

  • 브라우저의 종류에 상관없이 실시간 웹 구현 가능
  • Node.js 특징인 single thread 기반의 Non-Blocking I/O으로 성능적 이점이 있다.

socket.io 단점

  • Node.js 모듈이기 때문에 JavaScript외에 다른 언어에서는 사용할 수 없다.

socket.io 통신 방식

  • Polling
  • WebSocket