NETWORK

[NETWORK] Socket.io / WebSocket

집한구석 2021. 11. 3. 23:11
728x90

WebSocket 개념

  • 웹 페이지의 한계에서 벗어나 실시간으로 상호작용하는 웹 서비스를 만드는 표준 기술

WebSocket 배경

  • HTTP 프로토콜은 클라이언트에서 서버로의 단방향 통신을 위해 만들어진 방법
  • 실시간 웹을 구현하기 위해서는 양방향 통신이 가능해야 하는데, WebSocker 이전에는 Polling, Streaming 방식을 이용하여 이를 구현하지만 각 브라우저마다 구현 방법이 달라서 개발이 어렵다는 문제점이 발생하여 해결하기 위해 WebSocket이 만들어짐

일반 TCP Socket과 차이점

  • 일반 HTTP Request를 통해 handshaking 과정을 거쳐 최초 접속이 이루어짐

WebSocket 특징

  • 소켓을 이용하여 자유롭게 데이터를 주고 받을 수 있음
  • 기존의 요청-응답 관계 방식보다 더 쉽게 데이터를 교환할 수 있음
  • 다른 HTTP Request와 마찬가지로 80포트를 통해 웹 서버에 연결
  • http:// 대신 ws://로 시작하여 Streaming과 유사한 방식으로 푸쉬를 지원
  • 브라우저와 웹서버가 WebSocket기능을 지원해야함
  • 브라우저 별로 지원하는 WebSocket 버전이 다름 (WebSocket 프로토콜은 아직 확정된 상태가 아니기 때문) 

WebSocket 장점

  • HTTP Request를 그대로 사용하기 때문에 기존 80, 443포트로 접속을 하므로 추가 방화벽을 열지 않고도 양방향 통신이 가능함
  • HTTP 규격인 CORS 적용이나 인증 등의 과정을 기존과 동일하게 사용할 수 있음

Socket.io 개념

  • 다양한 방식의 웹기술을 손쉽게 사용할 수 있는 모듈
  • WebSocket, FlashSocket, AJAX Long Polling, AJAX Multi part Streaming, IFrame 등 다양한 방법을 하나의 API로 추상화 한것
  • Socket.io는 JavaScript를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있도록 한 기술

Socket.io 특징

  • Socket.io는 현재 바로 사용할 수 있는 기술
  • WebSocket 프로토콜은 IETF에서 관장하는 표준 프로토콜이라서 WebSocket을 지원하는 여러 서버 구현체가 있지만 Socket.io는 Node.js 하나 밖에 없음

Socket.io 장점

  • 개발자는 Socket.io로 개발을 하고 클라이언트로 푸쉬 메시지를 보내기만 하면, WebSocket을 지원하지 않는 브라우저의 경우, 브라우저 모델과 버전에 따라서 다양한 방법으로 내부적으로 푸쉬를 보내줌
  • WebSocket을 지원하지 않는 어느브라우저라도 푸쉬 메시지를 일관된 모듈로 보낼 수 있음

'NETWORK' 카테고리의 다른 글

[NETWORK] 웹사이트 접속과정  (0) 2021.11.14
[NETWORK] PDU (Protocol Data Unit)  (0) 2021.11.04
[NETWORK] GET / POST 메서드 비교  (0) 2021.11.01
[NETWORK] REST API  (0) 2021.10.31
[NETWORK] CORS  (0) 2021.10.31