[JS] Websocket 과 Socket.IO 의 설명, 비교하기

김현수·2023년 11월 4일
0

JS

목록 보기
3/13


🖋️ Q. WebSocket ?


HTML5 표준의 일부로, 서버와 클라이언트 간의 양방향 통신을 위한 프로토콜

웹소켓 연결은 HTTP를 통해 핸드셰이크를 진행한 후, 동일한 연결을 유지하면서 데이터를 교환

브라우저에 내장되어 있으며, 서버와 클라이언트가 모두 WebSocket 프로토콜을 지원


  • 특징

    • 표준 프로토콜: IETF에 의해 표준화된 프로토콜 (ws와 wss)
    • 경량 프로토콜: 헤더가 작아 오버헤드가 낮음
    • TCP 기반: 연결 지향적이고 신뢰성 있는 통신을 제공
    • 양방향 통신: 서버와 클라이언트가 동시에 데이터를 보내기 가능
  • 사용할 때

    • 브라우저와 서버가 WebSocket 표준을 모두 지원할 때
    • 낮은 오버헤드와 빠른 통신이 필요할 때
    • 양방향 통신을 사용하는 실시간 애플리케이션에 적합


🖍️ Q. Socket.IO ?


WebSocket을 기반, 이를 추상화하여 다양한 환경과 통신 방식을 지원하는 라이브러리

WebSocket이 지원되지 않는 환경에서도 작동 가능 폴백 옵션을 제공, 추가적인 기능 존재


  • 특징

    • 자동 재연결: 연결이 끊어지면 자동으로 재연결을 시도
    • 폴백 메커니즘: 오래된 브라우저나 통신 환경에서도 작동(예: long polling)
    • 방(Rooms)과 네임스페이스(Namespace): 데이터를 구성화하여 보내기 가능
    • 빌트인 이벤트: 더 쉬운 이벤트 핸들링을 위한 기능을 제공
  • 사용할 때

    • 브라우저 호환성과 추가 기능(자동 재연결, 방, 이벤트 핸들링 등)이 필요할 때
    • 개발이 좀 더 편리하고 빠르게 필요할 때
    • WebSocket만으로는 불충분한 기능을 필요로 할 때


📢 어느 것을 사용?


  • Socket.IO는 기능이 많고 사용하기 쉽지만, 이 모든 기능이 필요하지 않다.
@ WebSocket
표준 프로토콜만으로 충분하고, 
최소한의 오버헤드로 매우 빠른 통신이 필요한 경우, 
또한 모든 대상 클라이언트가 WebSocket을 지원하는 환경이 보장될 때 적합

@ Socket.IO
브라우저 호환성이 중요하거나, 
자동 재연결, 네임스페이스, 방 등의 추가 기능이 필요할 때, 
또는 더 높은 수준의 추상화를 통해 빠르고 쉽게 개발을 진행하고 싶을 때 유용
profile
일단 한다

0개의 댓글