WebSocket - soket.js

이한결·2023년 3월 28일
0

부트 캠프

목록 보기
97/98
post-thumbnail

3월 26일 여정 77일차이다.

오늘은 웹소켓에 대해 간단하게 알아볼까 한다.

오늘의 Today I Learned

웹 소켓은 기본적으로 클라이언트와 서버 사이의 관계가 stateless하게 이루어져 있다.
즉 클라이언트에서 Request를 날리면 서버에서 Response하는 과정으로 이루어져있다는 것이다.

그러나 웹 소켓은 Statefull protocol이다.
즉 요청을 매번 보내는 것이 아니라 connection을 유지해서 양방향 통신 또는 데이터 전송이 가능하게 하는 기술인 것이다. 웹 소켓은 handShake라는 과정을 통해서 Client와 Server 접속을 유지하게 된다.

웹소켓의 기존 TCP와 다른 점은 최초접속이 일반 http request를 통해서 handshaking 과정을 통해서 이루어 진다는 것이다. Clent에서 랜덤하게 키를 생성하고 Server는 이 키값을 바탕으로 토큰을 생성하여 Client에 Response를 보내어 Client와 Server간의 handShaking이 이루어진다.

웹소켓 프로토콜

soket.io

인터넷 익스플로러 구버전의 사용자는 webcoket으로 작성된 웹페이지를 볼 수 없습니다. 이를 해결하기위해 soket.io는 웹페이지가 열리는 브라우저가 websoket을 지원하면 일반 websoket방식으로 동작하고 지원하지 않는 브라우저라면 http를 이용해 websoket을 흉내내는 방식으로 통신을 지원합니다. soket.io는 nodeJS에 종속적 입니다.

soket.js

스프링에서 위와 같은 브라우저 문제를 해결하기 위한 방법으로 soketJS를 솔루션으로 제공합니다. 서버 개발시 일반 websoket으로 통신할지 SoketJS 호환으로 통신할지 결정할 수 있습니다. 그리고 클라이언트는 SoketJS client를 통해 서버랑 통신합니다.

stomp

stomp는 단순 (또는 스트리밍) 텍스트 지향 메시징 프로토콜입니다. spring에 종속적이며, 구독방식으로 사용하고 있습니다. 가벼워서 보통 많이들 사용합니다.
보통 Node.js 를 이용할땐 soket.io 를 주로 사용하고, Spring을 사용할땐 soket.js, stomp 를 주로 사용합니다.

profile
평범한 삶을 위하여

0개의 댓글