JavaScript

websocket과 라이브러리

oagree0123 2022. 4. 28. 09:26

websocket

webSocket은  TCP 연결에서 클라이언트와 서버 사이에
지속적인 완전 양방향 연결 스트림을 만들어 주는 기술입니다. 

webSocket의 특징

  1. 양방향 통신 (Full-Duplex) 방식
     
    • 클라이언트와 서버가 서로에게 데이터를 주고 받을 수 있음
    • 일반적인 Http통신은 client가 요청을 보내는 경우에만 server가 응답하는 단방향 통신
  2. 실시간 네트워킹(Real Time-Networking)

    • 웹 환경에서 연속된 데이터를 빠르게 노출 ex) 채팅, 주식
    • 여러 단발기에서 빠르게 데이터를 교환
  3. 최초 접속에서만 http프로토콜 위에서 handshaking을 하기 때문에 http header를 사용한다.

 

Socket.io

Socket.io는 node.js를 지원하고, websocket을 기반으로  실시간 웹 애플리케이션을 위한 JavaScript 라이브러리입니다 .

비동기 이벤트 방식을 사용해 실시간으로 간단하게 데이터를 주고받을 수 있게 만들어 줍니다.

 

소켓 연결 실패 시 fallback을 통해 다른 방식으로 알아서 해당 클라이언트와 연결을 시도합니다.

방 개념을 이용해 일부 클라이언트에게만 데이터를 전송하는 브로드캐스팅이 가능합니다.

SockJS

Springframework에서 WebSocket을 기반으로 websocket과 비슷한 기능을 제공하는 javascript 라이브러리 입니다.

스프링 메뉴얼에 webSocket 부분을 보면 브라우저 문제를 해결하기 위한 방법으로 SockJS를 솔루션으로 제시합니다.

크롬 뿐만 아니라 사파리, 파이어 폭스 등 websocket을 지원하지 않는 브라우저도 잘 작동이 된다.

 

STOMP

STOMP는 WebSocket 위에서 동작하는 메세지 프로토콜로,
클라이언트와 서버가 전송할 메시지 유형, 형식, 내용들을 정의하는 매커니즘입니다.

 

STOMP은 Publish-Subscribe 매커니즘을 제공합니다.

Broker를 통해서 다른 사용자들에게 메시지를 보내거나
서버가 특정 작업을 수행하도록 메시지를 보낼 수 있게 되는 것이다.

 

  •