WebSocket 기반 쌍방향 메시징

T
WebSocket 기반 쌍방향 메시징

        이희승
차세대 웹의 쌍방향 통신
  표준인 WebSocket
 프로토콜을 이해한다.
목차
• 등장 배경
•   프로토콜 라라
•   클라이언트 구현
•   서버 구현
•   앞으로의 전망
Web 2.0
• 풍부한 사용자 경험
 – AJAX, DHTML, CSS, …
 – Rich Internet Application
• 리프레시 없는 쌍방향 통신 (aka Comet)
 – Long Polling
 – Piggybacking
 – Hidden <iframe/>
한계
• HTTP
 – 무상태
 – 단방향 스스 · 요청 짝짓기
 – 불완전한 스 스스스스
• 환경에 따른 복잡한 구현 전략
 – 언제 끊어질 지 모른다!
 – 브라우저 · 서버 모두 복잡
 – 프록시
목차
• 등장 배경
• 프로토콜 소개
• 클라이언트 구현
• 서버 구현
• 앞으로의 전망
특징
• HTML5 ‘표준’
 – 브라우저 · 서버 모두 간결
 – 프록시 지원 기대
• 커넥션 기반
• 양방향 풀 듀플렉스
• TCP/IP 소켓을 직접 다루듯
Handshake - Request
GET /demo HTTP/1.1
Host: example.com
Connection: Upgrade
Sec-WebSocket-Key2: 12998 5 Y3 1 .P00
Sec-WebSocket-Protocol: sample
Upgrade: WebSocket
Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5
Origin: http://example.com

^n:ds[4U
Handshake - Response
HTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Origin: http://example.com
Sec-WebSocket-Location: ws://example.com/demo
Sec-WebSocket-Protocol: sample

8jKS'y:G*Co,Wxa-
Handshake - Verification
 K1 = “4 @1 46546xW%0l 1 5”
 K2 = “12998 5 Y3 1 .P00”
  A = digitsOnly(K1) / countWhitespace(K1)
    = 4146546015 / 5 = 829309203 = 0x316E4113 (32b)
  B = digitsOnly(K2) / countWhitespace(K2)
    = 1299853100 / 5 = 259970620 = 0x0F7ED63C (32b)
  C = req.getContent()
    = “^n:ds[4U” = 0x5E6E3A64735B3455 (64b)
 IN = concat(A, B, C)
    = 0x 316E4113 0F7ED63C 5E6E3A64735B3455 (128b)
OUT = md5sum(IN)
    = 0x386a4B5327793A472A436F2C5778612D (128b)
    = res.getContent()
    = “8jKS'y:G*Co,Wxa-”
Data Frame
• Handshake 후 어느 쪽에서든 전송 가능
• Text Frame
  – Type + UTF8 String + Terminator
  – “Hello, World!”
  – 00 48656C6C6F2C20576F726C6421 FF
• Binary Frame
  – 현재는 쓰이지 않으나 예약됨
Closing Handshake
• 연결을 닫고자 하는 쪽에서 Type 이
  0xFF이고 길이가 0x00인 바이너리
  프레임 전송:

       0xFF 0x00
• 서로 주고 받은 후 연결 종료
목차
• 등장 배경
• 프로토콜 소개
• 클라이언트 구현
• 서버 구현
• 앞으로의 전망
지원 브라우저
• HTML5 지원 브라우저
 – Google Chrome 4+
 – Firefox 3.7pre
 – Apple Safari
• SWF 브리지
 – Firefox 3.0 ~ 3.6
 – Internet Explorer 6+
 – Opera 9+
예제
if (!window.WebSocket) alert(“UNSUPPORTED”)

var s = new   WebSocket("ws://localhost:8080/demo")
s.onmessage   = function(evt) { alert(evt.data) }
s.onopen      = function(evt) { alert(“OPEN")   }
s.onclose     = function(evt) { alert(“CLOSED") }

function send(message) {
  if (s.readyState == WebSocket.OPEN)
    s.send(message)
  else
    alert(“NOT OPEN")
}
목차
• 등장 배경
• 프로토콜 소개
• 클라이언트 구현
• 서버 구현
• 앞으로의 전망
지원 서버
• API 표준화는 아직
• Standalone
  – Netty (from JBoss)
  – Grizzly
  – jWebSocket (via Netty)
• Servlet Containers
  – 확장 기능으로 제공
  – Jetty 8
  – Glassfish (via Grizzly)
목차
•   등장 배경
•   프로토콜 소개
•   클라이언트 구현
•   서버 구현
• 앞으로의 전망
앞으로의 전망
• 아직은 IETF Draft
  – 스펙 변경 예상
    • Draft 75 vs. 76
  – 직접 구현보다는 신뢰할만한 라이브러리로
    • Netty를 추천
• 프록시 구현 변경 필요
  – 프록시 사용이 거의 없는 일반 이용자부터
• 브라우저 뿐만 아니라 다양한 곳에서
  – WebSocket 을 통해 JMS 큐에 직접 연결
    • HornetQ를 추천
참고 자료
• WebSocket IETF Draft
   – http://www.whatwg.org/specs/web-socket-protocol/
• WebSockets.org
   – http://www.websockets.org/
• Netty Project
   – http://jboss.org/netty/
• Flash Bridge
   – http://github.com/gimite/web-socket-js
• HornetQ
   – http://jboss.org/hornetq/
- 감사합니다 -
1 of 21

Recommended

Web Socket by
Web SocketWeb Socket
Web Socketymtech
2.2K views16 slides
웹소켓 (WebSocket) by
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)jeongseokoh
3K views11 slides
Web socket by
Web socketWeb socket
Web socketymtech
736 views16 slides
nodejs websocket & SOCKET.IO by
nodejs websocket & SOCKET.IOnodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IOMungyu Choi
1.4K views8 slides
실시간통신 by
실시간통신실시간통신
실시간통신Woojing Seok
1.4K views9 slides
Netty 시작하기 (1) by
Netty 시작하기 (1)Netty 시작하기 (1)
Netty 시작하기 (1)Daehyun Kim
5.2K views52 slides

More Related Content

What's hot

맛만 보자 Undertow by
맛만 보자 Undertow맛만 보자 Undertow
맛만 보자 Undertowjbugkorea
6.6K views24 slides
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓. by
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.sung ki choi
8.1K views32 slides
Network 초보자를 위한 Netty by
Network 초보자를 위한 NettyNetwork 초보자를 위한 Netty
Network 초보자를 위한 NettyChoulhyouc Lee
6.6K views54 slides
이승재, 실시간 HTTP 양방향 통신, NDC2012 by
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012devCAT Studio, NEXON
11K views57 slides
[Hello world 오픈세미나]vertx&socket io by
[Hello world 오픈세미나]vertx&socket io[Hello world 오픈세미나]vertx&socket io
[Hello world 오픈세미나]vertx&socket ioNAVER D2
12.1K views28 slides
Node by
NodeNode
Node경륜 이
232 views20 slides

What's hot(20)

맛만 보자 Undertow by jbugkorea
맛만 보자 Undertow맛만 보자 Undertow
맛만 보자 Undertow
jbugkorea6.6K views
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓. by sung ki choi
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
sung ki choi8.1K views
Network 초보자를 위한 Netty by Choulhyouc Lee
Network 초보자를 위한 NettyNetwork 초보자를 위한 Netty
Network 초보자를 위한 Netty
Choulhyouc Lee6.6K views
[Hello world 오픈세미나]vertx&socket io by NAVER D2
[Hello world 오픈세미나]vertx&socket io[Hello world 오픈세미나]vertx&socket io
[Hello world 오픈세미나]vertx&socket io
NAVER D212.1K views
Meteor 0.3.6 Preview by Juntai Park
Meteor 0.3.6 PreviewMeteor 0.3.6 Preview
Meteor 0.3.6 Preview
Juntai Park13.9K views
자바 서블릿과 세션 (Java Servlet, Session) by Yu Yongwoo
자바 서블릿과 세션 (Java Servlet, Session)자바 서블릿과 세션 (Java Servlet, Session)
자바 서블릿과 세션 (Java Servlet, Session)
Yu Yongwoo811 views
Meteor를 통해서 개발하는 웹어플리케이션 서비스 by WebFrameworks
Meteor를 통해서 개발하는 웹어플리케이션 서비스Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스
WebFrameworks3.2K views
Websocket.. whit http, tcp by dana238767
Websocket.. whit http, tcpWebsocket.. whit http, tcp
Websocket.. whit http, tcp
dana23876784 views
Rb vs wp 로드타임 성능비교 by Gitaek kwon
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교
Gitaek kwon647 views
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇? by Opennaru, inc.
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
Opennaru, inc. 1.1K views
노드js 기초 by 경륜 이
노드js 기초 노드js 기초
노드js 기초
경륜 이623 views
vert.x 를 활용한 분산서버 개발하기 by John Kim
vert.x 를 활용한 분산서버 개발하기vert.x 를 활용한 분산서버 개발하기
vert.x 를 활용한 분산서버 개발하기
John Kim9.3K views
Servlet Architecture by JU Chae
Servlet ArchitectureServlet Architecture
Servlet Architecture
JU Chae602 views
Node.js Cloud Service Publish by Hyun Jin Moon
Node.js Cloud Service PublishNode.js Cloud Service Publish
Node.js Cloud Service Publish
Hyun Jin Moon715 views
모듈시스템과 webpack by DataUs
모듈시스템과 webpack모듈시스템과 webpack
모듈시스템과 webpack
DataUs54 views
서블릿(servlet) by JungHoon Lee
서블릿(servlet)서블릿(servlet)
서블릿(servlet)
JungHoon Lee11.9K views

Similar to WebSocket 기반 쌍방향 메시징

Node.js 첫걸음 by
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음SeungHyun Lee
714 views80 slides
WebKit at the Future Web Forum 2010 by
WebKit at the Future Web Forum 2010WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010Joone Hur
3.9K views45 slides
Web Socket API by
Web Socket APIWeb Socket API
Web Socket APIJeongHwan Jang
2K views31 slides
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해) by
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)DK Lee
11.2K views20 slides
Kaazing - 웹소켓 기술의 유일한 엔터프라이즈 솔루션 by
Kaazing - 웹소켓 기술의 유일한 엔터프라이즈 솔루션Kaazing - 웹소켓 기술의 유일한 엔터프라이즈 솔루션
Kaazing - 웹소켓 기술의 유일한 엔터프라이즈 솔루션미래웹기술연구소 (MIRAE WEB)
3.5K views29 slides
빠르게훓어보는 Node.js와 Vert.x by
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.xTerry Cho
15.1K views51 slides

Similar to WebSocket 기반 쌍방향 메시징(20)

WebKit at the Future Web Forum 2010 by Joone Hur
WebKit at the Future Web Forum 2010WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010
Joone Hur3.9K views
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해) by DK Lee
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
DK Lee11.2K views
빠르게훓어보는 Node.js와 Vert.x by Terry Cho
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
Terry Cho15.1K views
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기 by Ted Won
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
Ted Won1.9K views
멀티클라우드 Service Mesh by Jeong-Ho Na
멀티클라우드 Service Mesh멀티클라우드 Service Mesh
멀티클라우드 Service Mesh
Jeong-Ho Na2.7K views
막하는 스터디 첫 번째 만남 Node.js by 연웅 조
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js
연웅 조1.1K views
Mozilla 오픈 웹 모바일 플랫폼 (2012) by Channy Yun
Mozilla 오픈 웹 모바일 플랫폼 (2012)Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)
Channy Yun4.6K views
톰캣 운영 노하우 by jieunsys
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우
jieunsys24.4K views
프로젝트용 PC 환경구성 이찬희 by 찬희 이
프로젝트용 PC 환경구성   이찬희프로젝트용 PC 환경구성   이찬희
프로젝트용 PC 환경구성 이찬희
찬희 이366 views
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기 by John Kim
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
John Kim10.6K views
HTTPS를 이용한 챗봇 웹 어플리케이션 by Lee Geonhee
HTTPS를 이용한 챗봇 웹 어플리케이션HTTPS를 이용한 챗봇 웹 어플리케이션
HTTPS를 이용한 챗봇 웹 어플리케이션
Lee Geonhee247 views
댓글 플러그인 아포가토 by Goonoo Kim
댓글 플러그인 아포가토댓글 플러그인 아포가토
댓글 플러그인 아포가토
Goonoo Kim1.2K views
[오픈소스컨설팅]Tomcat6&7 How To by Ji-Woong Choi
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To
Ji-Woong Choi3.3K views
Html5 performance by yongwoo Jeon
Html5 performanceHtml5 performance
Html5 performance
yongwoo Jeon3.1K views
[DevOn 2013] Dynamic web proxy by 흥래 김
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy
흥래 김1.7K views
Spring 4.x Web Application 살펴보기 by Ji Heon Kim
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기
Ji Heon Kim9.2K views

More from trustinlee

사용자 경험 극대화를 위한 웹 서버 아키텍처 by
사용자 경험 극대화를 위한 웹 서버 아키텍처사용자 경험 극대화를 위한 웹 서버 아키텍처
사용자 경험 극대화를 위한 웹 서버 아키텍처trustinlee
1.7K views31 slides
APIviz – Java API Visualizer by
APIviz – Java API VisualizerAPIviz – Java API Visualizer
APIviz – Java API Visualizertrustinlee
1.2K views16 slides
Rapid Network Application Development with Apache MINA by
Rapid Network Application Development with Apache MINARapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINAtrustinlee
1.8K views36 slides
Apache MINA를 사용한 네트워크 어플리케이션 개발 by
Apache MINA를 사용한 네트워크 어플리케이션 개발Apache MINA를 사용한 네트워크 어플리케이션 개발
Apache MINA를 사용한 네트워크 어플리케이션 개발trustinlee
6.5K views31 slides
자바 네트워킹 기초에서 응용까지 by
자바 네트워킹 기초에서 응용까지자바 네트워킹 기초에서 응용까지
자바 네트워킹 기초에서 응용까지trustinlee
4.3K views34 slides
JBoss Middleware 및 Remoting 프로젝트 소개 by
JBoss Middleware 및 Remoting 프로젝트 소개JBoss Middleware 및 Remoting 프로젝트 소개
JBoss Middleware 및 Remoting 프로젝트 소개trustinlee
1.8K views42 slides

More from trustinlee(8)

사용자 경험 극대화를 위한 웹 서버 아키텍처 by trustinlee
사용자 경험 극대화를 위한 웹 서버 아키텍처사용자 경험 극대화를 위한 웹 서버 아키텍처
사용자 경험 극대화를 위한 웹 서버 아키텍처
trustinlee1.7K views
APIviz – Java API Visualizer by trustinlee
APIviz – Java API VisualizerAPIviz – Java API Visualizer
APIviz – Java API Visualizer
trustinlee1.2K views
Rapid Network Application Development with Apache MINA by trustinlee
Rapid Network Application Development with Apache MINARapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINA
trustinlee1.8K views
Apache MINA를 사용한 네트워크 어플리케이션 개발 by trustinlee
Apache MINA를 사용한 네트워크 어플리케이션 개발Apache MINA를 사용한 네트워크 어플리케이션 개발
Apache MINA를 사용한 네트워크 어플리케이션 개발
trustinlee6.5K views
자바 네트워킹 기초에서 응용까지 by trustinlee
자바 네트워킹 기초에서 응용까지자바 네트워킹 기초에서 응용까지
자바 네트워킹 기초에서 응용까지
trustinlee4.3K views
JBoss Middleware 및 Remoting 프로젝트 소개 by trustinlee
JBoss Middleware 및 Remoting 프로젝트 소개JBoss Middleware 및 Remoting 프로젝트 소개
JBoss Middleware 및 Remoting 프로젝트 소개
trustinlee1.8K views
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리 by trustinlee
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리
trustinlee1.8K views
오픈 소스 소개 by trustinlee
오픈 소스 소개오픈 소스 소개
오픈 소스 소개
trustinlee1K views

WebSocket 기반 쌍방향 메시징

  • 1. WebSocket 기반 쌍방향 메시징 이희승
  • 2. 차세대 웹의 쌍방향 통신 표준인 WebSocket 프로토콜을 이해한다.
  • 3. 목차 • 등장 배경 • 프로토콜 라라 • 클라이언트 구현 • 서버 구현 • 앞으로의 전망
  • 4. Web 2.0 • 풍부한 사용자 경험 – AJAX, DHTML, CSS, … – Rich Internet Application • 리프레시 없는 쌍방향 통신 (aka Comet) – Long Polling – Piggybacking – Hidden <iframe/>
  • 5. 한계 • HTTP – 무상태 – 단방향 스스 · 요청 짝짓기 – 불완전한 스 스스스스 • 환경에 따른 복잡한 구현 전략 – 언제 끊어질 지 모른다! – 브라우저 · 서버 모두 복잡 – 프록시
  • 6. 목차 • 등장 배경 • 프로토콜 소개 • 클라이언트 구현 • 서버 구현 • 앞으로의 전망
  • 7. 특징 • HTML5 ‘표준’ – 브라우저 · 서버 모두 간결 – 프록시 지원 기대 • 커넥션 기반 • 양방향 풀 듀플렉스 • TCP/IP 소켓을 직접 다루듯
  • 8. Handshake - Request GET /demo HTTP/1.1 Host: example.com Connection: Upgrade Sec-WebSocket-Key2: 12998 5 Y3 1 .P00 Sec-WebSocket-Protocol: sample Upgrade: WebSocket Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5 Origin: http://example.com ^n:ds[4U
  • 9. Handshake - Response HTTP/1.1 101 WebSocket Protocol Handshake Upgrade: WebSocket Connection: Upgrade Sec-WebSocket-Origin: http://example.com Sec-WebSocket-Location: ws://example.com/demo Sec-WebSocket-Protocol: sample 8jKS'y:G*Co,Wxa-
  • 10. Handshake - Verification K1 = “4 @1 46546xW%0l 1 5” K2 = “12998 5 Y3 1 .P00” A = digitsOnly(K1) / countWhitespace(K1) = 4146546015 / 5 = 829309203 = 0x316E4113 (32b) B = digitsOnly(K2) / countWhitespace(K2) = 1299853100 / 5 = 259970620 = 0x0F7ED63C (32b) C = req.getContent() = “^n:ds[4U” = 0x5E6E3A64735B3455 (64b) IN = concat(A, B, C) = 0x 316E4113 0F7ED63C 5E6E3A64735B3455 (128b) OUT = md5sum(IN) = 0x386a4B5327793A472A436F2C5778612D (128b) = res.getContent() = “8jKS'y:G*Co,Wxa-”
  • 11. Data Frame • Handshake 후 어느 쪽에서든 전송 가능 • Text Frame – Type + UTF8 String + Terminator – “Hello, World!” – 00 48656C6C6F2C20576F726C6421 FF • Binary Frame – 현재는 쓰이지 않으나 예약됨
  • 12. Closing Handshake • 연결을 닫고자 하는 쪽에서 Type 이 0xFF이고 길이가 0x00인 바이너리 프레임 전송: 0xFF 0x00 • 서로 주고 받은 후 연결 종료
  • 13. 목차 • 등장 배경 • 프로토콜 소개 • 클라이언트 구현 • 서버 구현 • 앞으로의 전망
  • 14. 지원 브라우저 • HTML5 지원 브라우저 – Google Chrome 4+ – Firefox 3.7pre – Apple Safari • SWF 브리지 – Firefox 3.0 ~ 3.6 – Internet Explorer 6+ – Opera 9+
  • 15. 예제 if (!window.WebSocket) alert(“UNSUPPORTED”) var s = new WebSocket("ws://localhost:8080/demo") s.onmessage = function(evt) { alert(evt.data) } s.onopen = function(evt) { alert(“OPEN") } s.onclose = function(evt) { alert(“CLOSED") } function send(message) { if (s.readyState == WebSocket.OPEN) s.send(message) else alert(“NOT OPEN") }
  • 16. 목차 • 등장 배경 • 프로토콜 소개 • 클라이언트 구현 • 서버 구현 • 앞으로의 전망
  • 17. 지원 서버 • API 표준화는 아직 • Standalone – Netty (from JBoss) – Grizzly – jWebSocket (via Netty) • Servlet Containers – 확장 기능으로 제공 – Jetty 8 – Glassfish (via Grizzly)
  • 18. 목차 • 등장 배경 • 프로토콜 소개 • 클라이언트 구현 • 서버 구현 • 앞으로의 전망
  • 19. 앞으로의 전망 • 아직은 IETF Draft – 스펙 변경 예상 • Draft 75 vs. 76 – 직접 구현보다는 신뢰할만한 라이브러리로 • Netty를 추천 • 프록시 구현 변경 필요 – 프록시 사용이 거의 없는 일반 이용자부터 • 브라우저 뿐만 아니라 다양한 곳에서 – WebSocket 을 통해 JMS 큐에 직접 연결 • HornetQ를 추천
  • 20. 참고 자료 • WebSocket IETF Draft – http://www.whatwg.org/specs/web-socket-protocol/ • WebSockets.org – http://www.websockets.org/ • Netty Project – http://jboss.org/netty/ • Flash Bridge – http://github.com/gimite/web-socket-js • HornetQ – http://jboss.org/hornetq/