본문 바로가기

개발/출근log

DAY2. 스프링부트로 웹소켓 구현 - 02 웹소켓(WebSocket)이란?

웹소켓을 구현하기전 웹소켓이 어떤것인지 알아보려한다.

웹소켓(WebSocket)이란?

WebSocket은 클라이언트와 서버(브라우저와 서버)를 연결하고 실시간으로 통신이 가능하도록 하는 첨단 기술.

'두 프로그램 간의 메세지 교환을 위한 통신 방법 중 하나' 라고 할 수 있다.

 

HTTP와는 다른 통신 프로토콜로 웹 서버와 웹 브라우저가 서로 실시간 메세지를 교환하는데에 사용된다.


웹소켓의 탄생

기존에 존재하던 HTTP 방식은 요청(request)이 오면 응답( response)하는 단방향 방식이었고,

그보다 업그레이드 된 버전인  Ajax 또한 HTTP를 이용하기 때문에 요청을 보내야 응답하는 방식이었다.

그렇기 때문에 연결에 지속성도 없다.

또한 변경된 데이터를 가져오기 위해 계속해서 요청을 반복적으로 보내게 된다면 자원낭비가 되기때문에

이러한 문제들을 해결하기 위해 웹소켓이 탄생했다.

웹소켓의 특징

1 ) 양방향 통신

  • 기본적으로 소캣통신은 서버와 클라이언트 간에 1: N 관계를 맺는다.
  • 데이터 송수신을 동시에 처리할 수 있는 통신방법
  • 클라이언트와 서버가 서로에게 원할 때 데이터를 주고 받을 수 있다.

     

2) 실시간 네트워킹

  • 웹 환경에서 연속된 데이터를 빠르게 노출

웹소켓의 한계

1) Cross Browser 문제

  • 브라우저 중 버전에따라 지원이 안되는 경우가 있다

2) Stateful  한 성격

  • 항상 서버와 클라이언트가 연결을 유지하고 있어야한다.
  • 연결을 유지해야하기때문에 부하가 발생될 수 있다.

3) 비정상적으로 연결이 끊어졌을 때 적절한 대응이 필요하다

4) 프로그램 구현에 보다 많은 복잡성을 유발할 수 있다.

 

 

이제 웹소켓을 이용한 채팅방을 본격적으로 구현해보겠다.