징키쵸
징키홈
징키쵸
전체 방문자
오늘
어제
  • 분류 전체보기
    • Develop
      • Javascript
      • CS
      • React Natvie
    • Project
    • Library
    • 일상

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Web
  • web speech api
  • javascript
  • TTS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
징키쵸

징키홈

[웹소켓] 웹소켓(Websocket) 이해하기 (웹소켓이란? / Rest vs Websocket)
Develop/CS

[웹소켓] 웹소켓(Websocket) 이해하기 (웹소켓이란? / Rest vs Websocket)

2023. 2. 9. 21:26

안녕하세요 징키입니다 :)

오늘은 웹소켓 사용하기 시리즈 중 첫 번째인 웹소켓에 대한 이해를 공유하려고 합니다.

 

WebSocket이란?

  • 웹소켓은 지속적인 연결을 통해 브라우저와 서버 사이의 데이터를 교환하는 연결 방식이다.
  • 웹소켓은 처음 연결 시 HTTP 통신을 통해 handshake*를 하게 된다.
  • 패킷의 형태로 양방향 데이터 전달이 추가적인 HTTP 요청 없이 가능하다.
  • 웹소켓은 실시간 데이터 교환이 이루어져야 하는 채팅, 온라인 게임이나 주식 거래 시스템과 같은 서비스에 유용하다.

 

Handshake

 

Websocket과 HTTP

HTTP와 Websocket을 비교하는 것이 맞을까요?

 

Websocket을 검색하면 HTTP와 Websocket을 비교하는 글이 많이 볼 수 있습니다.

그래서! 이 둘을 비교하는 것이 적절한지 확인하기 위해 국내외 Websocket과 관련된 글을 읽어봤습니다.

 

그리고, HTTP와 Websocket을 비교하는 것은 적절하지 않은 것 같다는 결론을 내렸습니다

이유는 Websocket도 handshake 과정에서  HTTP를 사용하기 때문입니다.

연결을 성공한 뒤에는 TCP 연결이 클라이언트-서버의 연결을 끊지 않고 유지합니다. 결과적으로 Websocket은 한번의 TCP 연결 통해 데이터를 주고받게 됩니다.

 

그래서 HTTP를 기반으로 통신하는 REST와 비교하는 것이 맞다고 생각했습니다.

 

Websocket과 REST의 차이

구분 WebSocket REST
퍼포먼스 웹소켓은 오버헤드가 낮다. 
지연시간이 적다.
데이터를 지속적으로 주고

받아야 하는 경우에 적합하다.
웹소켓에 비해 오버헤드가 높다.
CRUD 요청에 적합하다.
HTTP사용 Handshake를 할때 HTTP를 사용한다. 서버 요청 시 HTTP를 사용한다.
통신 이벤트 기반, 양방향 통신이다. 요청 기반, 단방향 통신이다.
연결 상태 stateful stateless
TCP 연결 한 번의 TCP 연결을 통해 데이터를 주 받는다. 서버에 요청과 응답을 받기 위해 매번 새로운 TCP 연결이 발생한다.

 

Websocket과 REST는 각각의 특징을 가지고 있습니다.

그렇기 때문에, 사용할 어플리케이션의 특성에 따라 Websocket과 REST를 적절히 쓰는 것이 중요합니다.

 

참고

https://javascript.info/websocket
https://medium.com/nerd-for-tech/websockets-vs-rest-a876a5c3ffd
https://meongae.tistory.com/93
https://ably.com/topic/websocket-vs-rest
    징키쵸
    징키쵸

    티스토리툴바