http의 경우 단방향 통신으로 요청 시 응답을 보내주는 형식이다.
(요청이 있어야만 연결 되며 응답을 받은 후엔 연결이 종료됨).
이를 보완하기 위해 나온 것이 websocket이다.
웹소켓은 양방향 통신이 가능하다.
http 가 stateless protocol 이라면 websocekt은 stateful protocol 이기 때문에
클라이언트와 한 번 연결이 되면 계속해서 통신을 주고 받을 수 있다.
때문에 실시간 통신이 가능하여 채팅이나 주식, 실시간 동영상 streaming, 온라인게임 등과 같은
실시간 정보가 필요한 서비스에 주로 사용된다.
Websocekt은 초기에 연결한 오직 하나의 url만 존재한다.
웹소켓 커넥션을 만들려면 new WebSocket을 호출하는데 이때 ws라는 특수 프로토콜을 사용한다.
ws와 wss:// 라는 프로토콜이 있는데, 이 두 프로토콜의 관계는 HTTP와 HTTPS의 관계와 유사하다.
wss://는 보안 이외에도 신뢰성 측면에서 ws보다 좀 더 신뢰할 만한 프로토콜이다.
소켓이 정상적으로 만들어지면 이벤트를 사용 할 수 있게 된다.
단점
- 연결을 항상 유지해야 하는데 만약 비정상적으로 연결이 끊어졌을 경우 적절한 대응이 필요하기 때문에,
http와 비교하여 코딩의 복잡성을 가중시키는 요인이 될 수 있다.
- 연결을 유지하기 때문에 비용에 대한 부담이 있다. 특히나 트래픽 양이 많은 서버와 같은 경우 CPU에 큰 부담이 될 수 있다.
- 서버와 클리아이언트 간의 연결이 끊어졌을 때 생성되는 에러 메세지가 구체적이지 않아 디버깅에 어려움이 많기도 하다.
공부하며 도움받은 블로그 : https://inpa.tistory.com/category/Language/JavaScript%20%28Basic%29
웹의 3대 요소 (0) | 2022.02.08 |
---|---|
웹 표준 & 웹 접근성 & 웹 호환성 (0) | 2022.02.07 |
바벨(Babel)과 웹팩(webpack) (0) | 2022.02.07 |
브라우저의 동작 과정 (0) | 2022.02.07 |
DOM과 Virtual DOM (0) | 2022.02.07 |
댓글 영역