Web Socket 이란?

스브코·2021년 12월 26일
0

웹소켓이란?

Transport protocol의 일종으로 서버-클라이언트간 양방향의 stateful한 데이터 전송이 가능한 통신 방법이다. 기존의 단방향 HTTP 프로트콜과 호환되어 양방향 통신을 제공하기 위해 개발된 프로토콜로써, 일반 socket통신과 달리 http 80 port를 사용하므로 방화벽에 제약이 없다.


web socket의 특징

  • HTML5 웹 표준 기술

  • 매우 빠르게 작동하고 통신할때 아주 적은 데이터를 이용

  • 이벤트를 단순히 듣고, 보내는것만 가능


웹소켓 탄생 이유

웹소켓이 나오기 이전에는 모두 클라이언트의 요청이 없다면, 서버로부터 응답을 받을 수 없는 구조였습니다.

웹소켓은 이러한 문제를 해결하는 새로운 약속이었습니다.

웹소켓에서는 서버와 브라우저 사이에 양방향 소통이 가능합니다. 브라우저는 서버가 직접 보내는 데이터를 받아들일 수 있고, 사용자가 다른 웹사이트로 이동하지 않아도 최신 데이터가 적용된 웹을 볼 수 있게 해줍니다. 웹페이지를 ‘새로고침’하거나 다른 주소로 이동할 때 덧붙인 부가 정보를 통해서만 새로운 데이터를 제공하는 웹서비스 환경의 빗장을 본질적으로 풀어준 셈입니다.

웹에서도 채팅이나 게임, 실시간 주식차트와 같은 실시간이 요구되는 응용프로그램의 개발을 한층 효과적으로 구현할 수 있게 됩니다.

가상화폐의 분산화 기술의 핵심도 WebSocket으로 구현할 수 있습니다.

출처: https://choseongho93.tistory.com/266


웹소켓의 작동 원리

  • 서버와 클라이언트간의 최초 연결은 http 통신으로 hand shaking 하기 때문에 http헤더를 사용한다.

  • 웹 소켓을 위한 별도 포트는 없고, 기존 포트(80, 443)을 사용하며, 연결이 이루어지고 일정 시간이 지나면 http연결은 stateless되기 때문에 자동으로 연결이 끊어진다.

  • 프레임으로 구성된 메시지라는 논리적 단위로 송수신한다.

  • header가 작아 overhead가 적고, 장시간 접속을 전제로 하기 때문에, 접속한 상태라면 클라이언트나 서버로부터 데이터 송수신이 가능하다.

  • 데이터 송수신에 각각 커넥션을 맺을 필요없이 하나의 커넥션으로 데이터를 송수신 가능하다.


SocketJS와 STOMP

웹소켓은 HTML5 이후에 나왔기 때문에, HTML5 이전의 기술에는 적용이 어렵다. 그러므로 SockJS라는 것을 이용해 HTML5 이전 기술로 구현된 서비스에서도 웹소켓처럼 사용 할수 있게 한다.

웹소켓은 문자열들을 주고 받을 수 있게 해줄뿐 그 이상의 일은 하지 않는다. 주고 받는 문자열의 해독은 온전히 어플리케이션에게 맡기기 때문에, HTTP와 같이 형식이 정해진 프로트콜에서는 해석이 쉽지만, WS는 형식이 정해져 있지 않아서 해석이 매우 어렵다. 그러므로 WS방식은 sub protocol을 추가하여 주고 받는 메시지의 형태를 약속하는 경우가 많은데, 이러한 sub 프로토콜 중 하나가 STOMP이다. STOMP는 채팅 통신읗 하기 위한 형식을 정의해준다. HTTP와 유사하게 간단히 정의 되어 해석하기 편한 프로토콜이다.

profile
익히는 속도가 까먹는 속도를 추월하는 그날까지...

0개의 댓글