Socket.io와 WebSocket의 차이
Socket.io와 WebSocket의 차이
WebSocket
웹 페이지의 한계에서 벗어나 실시간으로 상호작용하는 웹 서비스를 만드는 표준 기술
배경
-
HTTP 프로토콜은 클라이언트에서 서버로의 단방향 통신을 위해 만들어진 방법
-
실시간 웹을 구현하기 위해서는 양방향 통신이 가능해야 하는데, WebSocket 이전에는 Polling, Streaming 방식의 AJAX 코드를 이용하여 이를 구현하였다.
-
하지만 이 방법들을 이용하면 각 브라우저마다 구현 방법이 달라 개발이 어렵다는 문제점이 있었다.
-
이를 위해 HTML5 표준의 일부로 WebSocket이 만들어지게 되었다.
일반 TCP Socket과의 차이점
- 일반 HTTP Request를 통해 handshaking 과정을 거쳐 최초 접속이 이루어진다.
특징
-
소켓을 이용하여 자유롭게 데이터를 주고 받을 수 있다.
-
기존의 요청-응답 관계 방식보다 더 쉽게 데이터를 교환할 수 있다.
-
다른 HTTP Request와 마찬가지로 80포트를 통해 웹 서버에 연결한다.
-
http:// 대신 ws:// 로 시작하며 Streaming과 유사한 방식으로 푸쉬를 지원한다.
Socket.io
다양한 방식의 실시간 웹 기술을 손쉽게 사용할 수 있는 모듈 (웹 클라이언트로의 푸쉬를 지원하는 모듈)
Socket.io는 JavaScript를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있도록 한 기술이다.
특징
-
Socket.io는 현재 바로 사용할 수 있는 기술이다.
-
개발자는 Socket.io로 개발을 하고 클라이언트로 푸쉬 메시지를 보내기만 하면, WebSocket을 지원하지 않는 브라우저의 경우는 브라우저 모델과 버전에 따라서 AJAX Long Polling, MultiPart Streaming, Iframe을 이용한 푸쉬, JSONP Polling, Flash Socket 등 다양한 방법으로 내부적으로 푸쉬 메시지를 보내준다.
가장 큰 차이
- 어느 브라우져와 상관없이 일관적으로 통신
출처 : https://github.com/WeareSoft/tech-interview/blob/master/contents/network.md