본문 바로가기
일하다가??

WebSocket 기반 실시간 양방향 통신.

by 램쥐뱅 2017. 2. 8.

Node.js 를 개인적인 놀이(?) 로 사용해보며 접해보기만 하여 어렴풋이 개념만 접하고 있었다.


그래서 다시한번 정리하던중 또 잘 정리해놓은 마음에 드는 글 발견!


웹소켓의 클라이언트 예제는 http://www.websocket.org/echo.html 에서 체험해 볼수있고, 서버 사이드 예제는 사용하고 싶은거 찾아 씁시다!




1.WebSocket 이란.


WebSocket은 컴퓨터 네트워크용 통신 규약의 하나이다. ( ws:// )  

인터넷의 표준화 단체인 W3C(World Wide Web Consortium)IETF(Internet Engineering Task Force)가 Web server 와 Web browser 간의 통신을 위한 규정을 정의한 쌍방향통신(Duplex)용 기술 규약이다.

API는 W3C가 책정을 맡고 있고, WebSocket 프로토콜은 IETF가 책정을 맡고 있다.




2. WebSocket의 등장 배경.


초기 웹의 탄생 목적은 문서 전달과 하이퍼링크를 통한 문서 연결이었다. 웹을 위한 HTTP 프로토콜은 이러한 목적에 매우 부 합하는 모델이다. 그러나 시대가 변하고 환경이 발전할 수록 웹이 더 이상 문서공유에만 집중할 수 없었다. 갈수록 동적인 표 현과 뛰어난 상호작용이 요구되었고 이로 인해 여러 새로운 기술이 탄생되었다. 플래시(플렉스), 자바애플릿(자바FX), ActiveX , 실버라이트 등을 들 수 있다. 하지만 이들은 웹에서 화려한 동작과 뛰어난 상호작용을 보장하지만 순수 웹 환경이 아 니라 별도의 런타임을 플러그 인 형태로 브라우저에 설치해야 사용 가능하다. HTML5는 그 주요 목적 중 하나인, 플러그 인 없 는 일관되고 표준화된 웹 응용 환경이라는 기치하에 많은 참신한 스펙들이 개발되었다. 그 중 순수 웹 환경에서 실시간 양방향 통신을 위한 스펙이 바로 WebSocek 이다.




3. 웹(Web)의 실시간(양방향) 통신을 위한 그동안의 노력.


DHTML, iframe, Ajax, Comet 과 기술들이 등장했지만 이 모든 것은 '폴링(polling)' 방식이다. 즉 데이터 수신을 위해 서버가 클라이언트에게 전송해 주는 푸시(push)방식이 아니라 클라이언트가 서버에에게 요청하는 폴링(polling) 방식이였다. 비교적 최적의 대안이었던 Comet 역시 무의미한 반복 요청을 피하기 위한 연결유지 기법이 적용되었지만 일정 시간 이후에는 연결을 종료하고 다시 연결해야 한다. 그래서 Comet을 Long-Polling 라 한다.




4. 웹(Web)의 진정한 실시간(양방향) 통신, WebSocket의 등장.


WebSocket은 웹 서버와 웹 브라우저가 지속적으로 연결된 TCP 라인을 통해 실시간으로 데이터를 주고 받을 수 있도록 하는 HTML5의 새로운 사양이다. 따라서 WebSocket을 이용하면 일반적인 TCP소켓과 같이 연결지향 양방향 전이중 통신이 가능하다. 이와 같은 특징으로 웹에서도 채팅이나 게임, 실시간 주식 차트와 같은 실시간이 요구되는 응용프로그램의 개발을 한층 효 과적으로 구현할 수 있게 되었다.



5. 기존의 존재했던 통신방법과 WebSocket의 결정적 차이는?


지금까지 존재했던 통신방법과 WebSocket의 결정적인 차이는 프로토콜에 있다. WebSocket 프로토콜은 접속 확립에 HTTP를 사용하지만, 그 후의 통신은 WebSocket 독자의 프로토콜로 이루어진다. 또한, header가 상당히 작아 overhead가 적은 특징 이 있다. 장시간 접속을 전제로 하기 때문에, 접속한 상태라면 클라이언트나 서버로부터 데이터 송신이 가능하다. 더불어 데이터의 송신과 수신에 각각 커넥션을 맺을 필요가 없어, 하나의 커넥션으로 데이터를 송수신 할 수 있다. 통신시에 지정되는 URL은 http://www.sample.com/과 같은 형식이 아니라 ws://www.sample.com/과 같은 형식이 된다.


6. WebSocket 소켓이 필요한 다섯가지 경우.


1. 실시간 양방향 데이터 통신이 필요한 경우.

2. 많은 수의 동시 접속자를 수용해야 하는 경우.

3. 브라우저에서 TCP 기반의 통신으로 확장해야 하는 경우.

4. 개발자에게 사용하기 쉬운 API가 필요할 경우.

5. 클라우드 환경이나 웹을 넘어 SOA(Service Oriented Architecture) 로 확장해야 하는 경우


7. WebSocket 서버의 종류.


1. pywebsocket(apache).

2. phpwebsocket(php).

3. jWebSocket(java,javascript).

4. web-socket-ruby(ruby).

5. Socket.IO(node.js).














참조.


http://cafe.naver.com/hermeneus/47



'일하다가??' 카테고리의 다른 글

motd 시스템 정보.  (0) 2019.07.24
Linux swap 메모리 초기화  (0) 2019.06.28
samba 설정후 마운트시 문제발생할때.  (0) 2017.01.17
OSX : NFS Mount (NFS 마운트)  (0) 2016.10.31
해시값의 복호화 ??  (18) 2016.10.08

댓글