본문 바로가기

Node.js

Socket.io


 영문 위키백과에는 ...


--------------------------------------------------------------------------------------------------

Socket.IO is a JavaScript library for realtime web applications. It enables realtime, bi-directional communication between web clients and servers. It has two parts: a client-side library that runs in the browser, and a server-side library for Node.js. Both components have a nearly identical API. Like Node.js, it is event-driven.


Socket.IO primarily uses the WebSocket protocol with polling as a fallback option,[3] while providing the same interface. Although it can be used as simply a wrapper for WebSocket, it provides many more features, including broadcasting to multiple sockets, storing data associated with each client, and asynchronous I/O.

--------------------------------------------------------------------------------------------------


 Socket.io는 실시간 웹 응용 프로그램을 위한 JavaScript 라이브러리이다. 웹 클라이언트와 서버 간의 실시간 양방향 통신을 가능하게 하며, 서버(Node.js)와 클라이언트(웹 어플리케이션)에서 동일한 API를 제공한다.


 WebSocket 프로토콜을 주로 사용하며, WebSocket의 단순한 레퍼로 사용할 수 있지만, 여러 소켓으로 브로드 캐스팅, 각 클라이언트와 관련된 데이터 저장 및 비동기 I/O를 포함하여 더 많은 기능을 제공한다. 


 라고 나와있다. 


 간단하게 WebSocket, FlashSocket, AJAX Long Polling, AJAX Multi part Streaming, IFrame, JSONP Polling을 하나의 API로 추상화한 것이다. 개발자가 각 기술에 대해서 잘 모른다 하여도 socket.io API를 통하면, 자동으로 적합한 방법을 찾아 통신을 이뤄준다. 


 좀더 알아보면, 웹에서도 양방향 통신에 대한 관심이 많아지면서 AJAX가 유행하고 몇가지 양방향 통신을 위한 방법들이 생겨났는데. 


 Polling

 - 클라이언트에서 주기적으로 요청(Request)를 보내는 방법으로 기본적으로 주기를 가지기 때문에, 즉각적인 대응은 불가능 하다. 


 Long Polling

 - 클라이언트로 요청이 들어오면 즉시 응답이 아닌 이벤트가 발생하면 응답한다.

 - 일정시간 동안 연결이 유지되며, 응답 후 연결을 끊는다.


 Streaming

 - 요청 후 연결을 유지하며, 이벤트 발생시 지속적으로 응답을 보낸다.

 - 응답 데이터의 시작과 끝을 알 수 없기 때문에 데이터의 유효성을 체크해야 한다.


 WebSocket은 이러한 상이한 방식을 뛰어넘어 실시간 양방향 통신을 가능하게 해주는데, 문제는 WebSocket이 나오기 이전 버전의 브라우저에서는 지원이 되지 않는다는 것이다. 지원하는 브라우저 버전은 http://caniuse.com/ 여기서 확인 할 수 있다. 


 해서 Socket.io는 WebSocket이 지원하지 않는 브라우저의 경우에는 AJAX의 방법 중 적합한 방법을 선택하여, 사용자가 신경쓰지 않아도 실시간 통신을 가능하게 해준다. 



설치

 npm 으로 설치할 수 있으며(npm install socket.io), 작성일 기준으로 최신 버전은 2.0.3 이다. 

 

공식 사이트 : https://socket.io/





'Node.js' 카테고리의 다른 글

유용한 모듈 2 - winston  (0) 2017.08.07
유용한 모듈 1 - moment  (0) 2017.08.03
Express  (0) 2017.07.27
echo Server-Client Test  (0) 2017.07.26
echo Client  (0) 2017.07.26