WebSocket

[WebSocket] WebSocket이란?

Jeong Jeon
반응형

1). 정의 : websocket이란 웹 서버와 웹 브라우저간 실시간 양방향 통신환경을 제공해주는 실시간 통신 기술.

Polling 방식(요청-응답방식)과 다르게 양방향으로 원할때 요청을 보낼 수 있으며 stateless한 HTTP에 비해 오버헤드가 적은 장점이 있다.

HTTP 프로토콜에서 Handshaking을 완료한 후, HTTP로 동작을 하지만, HTTP와는 다른 방식으로 통신을 한다.

  •  HTTP통신의 단점을 개선

  •  영구적 양방향 통신 (연결이 끊어지지 않고 지속됨)

  •  HTML5의 주요 API

  • HTTP Protocol을 기반으로 하는 웹 브라우저의 웹 서버간의 양방향 통신을 지원하기 위한 표준

  • Client와 Server가 실시간으로 메시지(데이터)를 자유롭게 주고 받을 수 있음

 

2). 언제쓰나?

Spring Reference을 참조하면, 자주 /그리고 많은 양의 /또한 지연이 짧아야 하는 통신을 할 수록 WebSocket이 적합하다라고 한다.

 

3). polling 방식과 streaming 방식이란??

3-1). Polling

  • 클라이언트에서 일정 주기마다 요청을 보내고 서버는 현재 상태를 바로 응답하는 방식

    이 방식은 실시간으로 반영되는 것이 중요한 서비스에는 별로 좋지 않고 서버에서 변화가 없더라도 매 요청마다 응답을 내려주기 때문에 불필요한 트래픽이 발생

3-2).Long Polling

  • 클라이언트에서 요청을 보내고 서버에서는 이벤트가 발생했을 때 응답을 내려주고 클라이언트가 응답을 받았을때 다시 다음 응답을 기다리는 요청을 보내는 방식

    실시간 반응이 가능하고 polling에 비해서 불필요한 트래픽은 유발하지는 않지만 오히려 이벤트가 잦다면 순간적으로 과부하 발생

3-3). Streaming

  • 이벤트가 발생했을때 응답을 내려주는데 응답을 완료시키지 않고 계속 연결을 유지하는 방식

    Long Polling에 비해 응답마다 다시 요청을 하지 않아도 되므로 효율적이지만, 연결 시간이 길어질수록 연결의 유효성 관리의 부담이 발생.

 

결국 polling / LongPolling / Streaming의 단점을 극복하여 실시간으로 가볍게 사용할 수 있게 도와주는 아이가 바로 Websocket 되시겠습니다.~

반응형