본문 바로가기
WEB

HTTP vs WebSocket 차이점

by 방준이 2021. 11. 29.
반응형

HTTP vs WebSocket 차이점

 

 오늘은 HTTPWebSocket의 차이점에 대해서 정리해보고자 합니다. 앞으로 진행할 파이널 프로젝트에 채팅 기능을 넣어보고자 공부를 진행함에 있어서  평소에도 사용하고 들어 봤던 용어임에도 정확히 개념 파악도 안 된 상태에서 써왔던 것에 대해서 굉장히 불편한 마음을 느꼈습니다. 이번 기회를 통해서 확실히 알아보겠습니다.


 

우선 HTTPWebSocket에 대해서 간략하게 그림을 통해서 살펴보겠습니다.

 

 

https://blog.scaleway.com/iot-hub-what-use-case-for-websockets/  - 출처

 

 첫 번째로 HTTP(HyperText Transfer Protocol) 에 대해서 알아보겠습니다. 이는 Front, Backend를 공부했다면 지겹게 들어봤을 개념이다.  클라이언트인 웹브라우저와 웹 서버가 서로 간 소통하기 위한 프로토콜이다. 예를 들어 클라이언트가 HTTP를 통해 특정 페이지 , 정보를 요청하게 되면 서버는 요청에 응답하여 필요한 정보를 클라이언트(사용자) 에게 해당 정보를 전달하게 된다. 위의 그림에서도 알 수 있듯이 Response가 있기 전에 무조건 Request가 있어야 한다. 또한 HTTP에는 여러 메서드 종류와 속성이 존재하고 이에 대한 응답으로 여러 상태 코드가 존재하지만 해당 게시글에서는 HTTP 개념에 대해서만 살펴보겠습니다.

 

 두 번째로는 WebSocket에 대해서 알아보겠습니다. 해당 개념에 대해서 알기 전에 WebSocket이 왜 필요한지, HTTP만 가지고는 웹을 동작시킬 수는 없는것인지 알아보겠습니다. 페이스북 메시지를 예로 들어보겠습니다. 친구 A가 나에게 메시지를 보낸경우 해당 메시지가  HTTP를 통해서  전달이 되는것일까요?  그렇다면 주기적으로  서버에 request를 보내서 메시지가 왔는지를 체크를 해야 할 것입니다. WebSocket은 하나의 TCP접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜입니다. 이를 사용함으로써 서버와 사용자 간의 실시간 데이터 전송을 용이하게 합니다.  예를 들어 주식, 코인 거래와 같은 트레이딩 시스템,  SNS 애플리케이션 등이 대표적인 예가 되겠습니다. 해당 기능들은 HTTP에 개념에 대해서 알고 있다면 이를 이용하는 방법은 매우 비효율적인 방법일 것이라는 생각을 하고 계실 것이 분명합니다! 다음은 WebSocket의 특징 2가지를 정리해보겠습니다.

 

  • 양방향 통신이 가능하다.  서버에서 일방적으로 클라이언트로 요청을 보낼 수 있습니다.
  • 실시간 통신이 가능하다.  위의 그림과 같이 Connection을 유지하고 있는 동안 request-response 방식의 통신이 아닌 아닌 양방향의 실시간 데이터 통신이 가능합니다. 

 

 

 다음 자료에서는 WebSocket을 Spring-Boot에서  사용하는 방법을 살펴보겠습니다. 사실 개념적인 부분만 하더라도 웹소켓의 동작방법과 Connection의 과정등등 설명할 수 있는 부분은 굉장히 많지만 위처럼 개념적인 부분만 간단하게 살펴보았습니다. 

 

 

 

 

 

 

참고자료


https://blog.scaleway.com/iot-hub-what-use-case-for-websockets/

 

https://nomadcoders.co/noom/lectures/3088

 

https://ko.wikipedia.org/wiki/%EC%9B%B9%EC%86%8C%EC%BC%93

 

https://kouzie.github.io/spring/Spring-Boot-%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-WebSocket/#

 

반응형