SlideShare une entreprise Scribd logo
1  sur  11
WebSocket
HTML5
Five Signs You Need HTML5
WebSockets
1. Your web application has data that must flow bi-directional
simultaneously.
2. Your web application must scale to large numbers of concurrent
users.
3. Your web application must extend TCP-based protocols to the
browser.
4. Your web application developers need an API that is easy to use.
5. Your web application must extend SOA over the Web and in the
Cloud.
출처: http://peterlubbers.sys-con.com/node/1551694 BY PETER LUBBERS
Websocket 특징
• Real-time full duplex communication over TCP
• Uses port 80 / 443
• URL scheme : ws, wss (SSL)
• Small overhead for text message (frame base) - 0x00 ~ 0xFF
• Ping/Pong frames for staying alive
웹소켓 지원 브라우저
• 웹소켓은 2011년 RFC 6455에 의해서 표준화
• 웹소켓 API들은 W3C에 의해서 표준으로 채택
웹소켓 Handshake 과정
GET /mychat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat
Sec-WebSocket-Version: 13
Origin: http://example.com
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
① 웹소켓을 사용할 수 있는지 서버에 요청
② websocket 으로 upgrade 요청
③ 웹서버 응답
④ HTTP를 websocket으로 switching 하겠다고 응답
⑤ 웹소켓 생성
⑥ 웹소켓 프로토콜을 이용해서 데이터 통신
브라우저 웹소켓 API
이벤트 핸들러 설명
onopen 웹소켓이 열리면 호출
onmessage 메시지가 도착하면 호출
onerror 에러가 발생하면 호출
onclose 웹소켓이 닫히면 호출
• 브라우저는 단 6개의 API로 소켓통신이 가능
• 4개의 이벤트 핸들러와 2개의 함수로 구성
함수 설명
send 메시지 전송
close 웹소켓 닫기
참고: https://w3c.github.io/websockets/#the-websocket-interface
WebSocket API 예제
웹소켓 서버구현 방법
• Apache Tomcat 7
• Spring 4.X (tomcat 7.x 이상이 필요)
• Java-WebSocket
– A barebones WebSocket client and server implementation written in
100% Java
• jWebSocket
– jWebSocket is a pure Java/JavaScript high speed bidirectional
communication solution for the Web server and various clients
• Grizzly
– Framework for building web servers of various scales and types incl
Web Socket client & server apis.
참고: https://java.net/projects/websocket-spec/pages/WebSocketAPIs
Spring 4.0에서 WebSocket 예제
• 다음과 같은 절차로서 구성
1) MessageHandler의 구성
2) Spring Configuratio에 ConnectionEndPoint 설정
디버깅 및 테스트
• 웹브라우저의 웹소켓 지원여부 확인
• Chrome Simple Websocket Client
크롬브라우저에서 simple websocket cleint extension을 이용하여 웹소켓 테스트 가능
웹소켓 개발 사례
데모: http://browserquest.mozilla.org/
소스: https://github.com/mozilla/BrowserQuest
• BrowserQuest

Contenu connexe

Tendances

Netty 시작하기 (1)
Netty 시작하기 (1)Netty 시작하기 (1)
Netty 시작하기 (1)Daehyun Kim
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임sung ki choi
 
Netty 시작하기 (4)
Netty 시작하기 (4)Netty 시작하기 (4)
Netty 시작하기 (4)Daehyun Kim
 
맛만 보자 Undertow
맛만 보자 Undertow맛만 보자 Undertow
맛만 보자 Undertowjbugkorea
 
Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법NAVER D2
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012devCAT Studio, NEXON
 
Meteor 0.3.6 Preview
Meteor 0.3.6 PreviewMeteor 0.3.6 Preview
Meteor 0.3.6 PreviewJuntai Park
 
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스WebFrameworks
 
모듈시스템과 webpack
모듈시스템과 webpack모듈시스템과 webpack
모듈시스템과 webpackDataUs
 
자바 서블릿과 세션 (Java Servlet, Session)
자바 서블릿과 세션 (Java Servlet, Session)자바 서블릿과 세션 (Java Servlet, Session)
자바 서블릿과 세션 (Java Servlet, Session)Yu Yongwoo
 
Vue.js와 Firebase를 활용한 웹 서비스 개발
Vue.js와 Firebase를 활용한 웹 서비스 개발Vue.js와 Firebase를 활용한 웹 서비스 개발
Vue.js와 Firebase를 활용한 웹 서비스 개발Aria (In Suk) Kim
 
Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Gitaek kwon
 
자바스크립트의 변천사
자바스크립트의 변천사자바스크립트의 변천사
자바스크립트의 변천사Hun Yong Song
 
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?Opennaru, inc.
 
Servlet Architecture
Servlet ArchitectureServlet Architecture
Servlet ArchitectureJU Chae
 
Mongo db intro & tips
Mongo db intro & tipsMongo db intro & tips
Mongo db intro & tipsInBum Kim
 
노드js 기초
노드js 기초 노드js 기초
노드js 기초 경륜 이
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)DK Lee
 

Tendances (20)

Netty 시작하기 (1)
Netty 시작하기 (1)Netty 시작하기 (1)
Netty 시작하기 (1)
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임
 
Netty 시작하기 (4)
Netty 시작하기 (4)Netty 시작하기 (4)
Netty 시작하기 (4)
 
맛만 보자 Undertow
맛만 보자 Undertow맛만 보자 Undertow
맛만 보자 Undertow
 
Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법Django에서 websocket을 사용하는 방법
Django에서 websocket을 사용하는 방법
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
Meteor 0.3.6 Preview
Meteor 0.3.6 PreviewMeteor 0.3.6 Preview
Meteor 0.3.6 Preview
 
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스
 
모듈시스템과 webpack
모듈시스템과 webpack모듈시스템과 webpack
모듈시스템과 webpack
 
자바 서블릿과 세션 (Java Servlet, Session)
자바 서블릿과 세션 (Java Servlet, Session)자바 서블릿과 세션 (Java Servlet, Session)
자바 서블릿과 세션 (Java Servlet, Session)
 
Servlet3
Servlet3Servlet3
Servlet3
 
Vue.js와 Firebase를 활용한 웹 서비스 개발
Vue.js와 Firebase를 활용한 웹 서비스 개발Vue.js와 Firebase를 활용한 웹 서비스 개발
Vue.js와 Firebase를 활용한 웹 서비스 개발
 
Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교
 
자바스크립트의 변천사
자바스크립트의 변천사자바스크립트의 변천사
자바스크립트의 변천사
 
Node
NodeNode
Node
 
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
 
Servlet Architecture
Servlet ArchitectureServlet Architecture
Servlet Architecture
 
Mongo db intro & tips
Mongo db intro & tipsMongo db intro & tips
Mongo db intro & tips
 
노드js 기초
노드js 기초 노드js 기초
노드js 기초
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
 

Similaire à 웹소켓 (WebSocket)

[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy흥래 김
 
Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)Channy Yun
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE 흥래 김
 
vert.x 를 활용한 분산서버 개발하기
vert.x 를 활용한 분산서버 개발하기vert.x 를 활용한 분산서버 개발하기
vert.x 를 활용한 분산서버 개발하기John Kim
 
01.모바일 프레임워크 이론
01.모바일 프레임워크 이론01.모바일 프레임워크 이론
01.모바일 프레임워크 이론Hankyo
 
Websocket.. whit http, tcp
Websocket.. whit http, tcpWebsocket.. whit http, tcp
Websocket.. whit http, tcpdana238767
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석Tommy Lee
 
WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010Joone Hur
 
Apache http component
Apache http componentApache http component
Apache http component흥래 김
 
WebRTC in 2014
WebRTC in 2014WebRTC in 2014
WebRTC in 2014Lee WonJae
 
HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1J B
 
Servlet&jsp 1장
Servlet&jsp 1장Servlet&jsp 1장
Servlet&jsp 1장JeongBong Kim
 
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기iFunFactory Inc.
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기Ji Heon Kim
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How ToJi-Woong Choi
 
멀티클라우드 Service Mesh
멀티클라우드 Service Mesh멀티클라우드 Service Mesh
멀티클라우드 Service MeshJeong-Ho Na
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우jieunsys
 

Similaire à 웹소켓 (WebSocket) (20)

Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy
 
Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
 
Websocket
WebsocketWebsocket
Websocket
 
vert.x 를 활용한 분산서버 개발하기
vert.x 를 활용한 분산서버 개발하기vert.x 를 활용한 분산서버 개발하기
vert.x 를 활용한 분산서버 개발하기
 
01.모바일 프레임워크 이론
01.모바일 프레임워크 이론01.모바일 프레임워크 이론
01.모바일 프레임워크 이론
 
Websocket.. whit http, tcp
Websocket.. whit http, tcpWebsocket.. whit http, tcp
Websocket.. whit http, tcp
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
 
WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010WebKit at the Future Web Forum 2010
WebKit at the Future Web Forum 2010
 
Apache http component
Apache http componentApache http component
Apache http component
 
WebRTC in 2014
WebRTC in 2014WebRTC in 2014
WebRTC in 2014
 
HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1
 
Servlet&jsp 1장
Servlet&jsp 1장Servlet&jsp 1장
Servlet&jsp 1장
 
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
 
L4교육자료
L4교육자료L4교육자료
L4교육자료
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To
 
멀티클라우드 Service Mesh
멀티클라우드 Service Mesh멀티클라우드 Service Mesh
멀티클라우드 Service Mesh
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우
 

웹소켓 (WebSocket)

  • 2. Five Signs You Need HTML5 WebSockets 1. Your web application has data that must flow bi-directional simultaneously. 2. Your web application must scale to large numbers of concurrent users. 3. Your web application must extend TCP-based protocols to the browser. 4. Your web application developers need an API that is easy to use. 5. Your web application must extend SOA over the Web and in the Cloud. 출처: http://peterlubbers.sys-con.com/node/1551694 BY PETER LUBBERS
  • 3. Websocket 특징 • Real-time full duplex communication over TCP • Uses port 80 / 443 • URL scheme : ws, wss (SSL) • Small overhead for text message (frame base) - 0x00 ~ 0xFF • Ping/Pong frames for staying alive
  • 4. 웹소켓 지원 브라우저 • 웹소켓은 2011년 RFC 6455에 의해서 표준화 • 웹소켓 API들은 W3C에 의해서 표준으로 채택
  • 5. 웹소켓 Handshake 과정 GET /mychat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== Sec-WebSocket-Protocol: chat Sec-WebSocket-Version: 13 Origin: http://example.com HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk= Sec-WebSocket-Protocol: chat ① 웹소켓을 사용할 수 있는지 서버에 요청 ② websocket 으로 upgrade 요청 ③ 웹서버 응답 ④ HTTP를 websocket으로 switching 하겠다고 응답 ⑤ 웹소켓 생성 ⑥ 웹소켓 프로토콜을 이용해서 데이터 통신
  • 6. 브라우저 웹소켓 API 이벤트 핸들러 설명 onopen 웹소켓이 열리면 호출 onmessage 메시지가 도착하면 호출 onerror 에러가 발생하면 호출 onclose 웹소켓이 닫히면 호출 • 브라우저는 단 6개의 API로 소켓통신이 가능 • 4개의 이벤트 핸들러와 2개의 함수로 구성 함수 설명 send 메시지 전송 close 웹소켓 닫기 참고: https://w3c.github.io/websockets/#the-websocket-interface
  • 8. 웹소켓 서버구현 방법 • Apache Tomcat 7 • Spring 4.X (tomcat 7.x 이상이 필요) • Java-WebSocket – A barebones WebSocket client and server implementation written in 100% Java • jWebSocket – jWebSocket is a pure Java/JavaScript high speed bidirectional communication solution for the Web server and various clients • Grizzly – Framework for building web servers of various scales and types incl Web Socket client & server apis. 참고: https://java.net/projects/websocket-spec/pages/WebSocketAPIs
  • 9. Spring 4.0에서 WebSocket 예제 • 다음과 같은 절차로서 구성 1) MessageHandler의 구성 2) Spring Configuratio에 ConnectionEndPoint 설정
  • 10. 디버깅 및 테스트 • 웹브라우저의 웹소켓 지원여부 확인 • Chrome Simple Websocket Client 크롬브라우저에서 simple websocket cleint extension을 이용하여 웹소켓 테스트 가능
  • 11. 웹소켓 개발 사례 데모: http://browserquest.mozilla.org/ 소스: https://github.com/mozilla/BrowserQuest • BrowserQuest