socket.io
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