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 |