기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고...
TRANSCRIPT
![Page 1: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/1.jpg)
기만콘
websocket with java(java라고 쓰고 spring이라고 읽...)
부종민
![Page 2: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/2.jpg)
발표 시작전에 간단한 웹소켓 예제 확인겸 간단한 설문을 진행하겠습니다.
![Page 3: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/3.jpg)
![Page 4: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/4.jpg)
User
Admin
![Page 5: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/5.jpg)
User
Admin
![Page 6: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/6.jpg)
User
Admin
![Page 7: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/7.jpg)
시작
User
Admin
![Page 8: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/8.jpg)
QuestionController
AnswerController
시작
![Page 9: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/9.jpg)
시작
User
Admin
![Page 10: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/10.jpg)
시작
User
Admin
![Page 11: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/11.jpg)
시작
User
Admin
![Page 12: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/12.jpg)
웹소켓으로 한다면?
![Page 13: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/13.jpg)
User
Admin
MessageQueue
PUB
SUB
![Page 14: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/14.jpg)
MessageQueue
User
Admin PUB
SUB
![Page 15: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/15.jpg)
MessageQueue
PUB
SUB
시작
User
Admin
![Page 16: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/16.jpg)
MessageQueue
PUB
SUBUser
Admin
시작
![Page 17: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/17.jpg)
MessageQueue
PUB
SUB
시작
User
Admin
![Page 18: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/18.jpg)
MessageQueue
PUB
SUBUser
Admin
시작
![Page 19: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/19.jpg)
MessageQueue
User
Admin
시작시작시작시작
PUB
SUB
![Page 20: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/20.jpg)
MessageQueue
PUB
SUBUser
Admin
![Page 21: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/21.jpg)
polling과 push의 차이입니다.
![Page 22: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/22.jpg)
polling push
![Page 23: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/23.jpg)
그럼 웹소켓은?
![Page 24: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/24.jpg)
'web' + 'socket'
![Page 25: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/25.jpg)
web
그냥 웹!! 그냥 소켓!! client
socket
port 80, 443
프로토콜(http) ws
SSL(https) wss
client javscript socket api를 이용
![Page 26: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/26.jpg)
웹소켓이란?
http는 tcp/ip 기반 비연결지향 프로토콜과 대비
websocket 프로토콜(RFC6455) - 연결지향(연결을 끊지 않음), 양방향통신(클라이언트 <-> 서버)
거래소(주식, 암호화폐), 게임등 realtime이 보장되어야하는 상황에서 커넥션비용을 줄이고 불필요한 네트워크 비용을 감소시켜줌.
웹소켓 참조 링크
![Page 27: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/27.jpg)
websocket을 이해하기위해잠시 프론트 이야기를 하겠습니다.
![Page 28: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/28.jpg)
![Page 29: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/29.jpg)
handshake - http -> websocket 서버와 합의
client server
![Page 30: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/30.jpg)
![Page 31: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/31.jpg)
![Page 32: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/32.jpg)
![Page 33: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/33.jpg)
![Page 34: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/34.jpg)
![Page 35: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/35.jpg)
![Page 36: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/36.jpg)
![Page 37: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/37.jpg)
![Page 38: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/38.jpg)
![Page 39: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/39.jpg)
![Page 40: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/40.jpg)
브라우저 지원현황
![Page 41: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/41.jpg)
![Page 42: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/42.jpg)
sockjs
websocket emulation
websocket과 같이 동작하기 위한 cross-browser javascript library
protocol
![Page 43: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/43.jpg)
![Page 44: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/44.jpg)
이제 백엔드 이야기를 해볼까요?
![Page 45: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/45.jpg)
spring framework으로websocket을 사용하는 방법.
![Page 46: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/46.jpg)
SPRING
Servlet Reactive
Websocket
Sockjs STOMP
Websocket
![Page 47: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/47.jpg)
SPRING
Servlet Reactive
Websocket
Sockjs STOMP
Websocket
![Page 48: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/48.jpg)
![Page 49: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/49.jpg)
entry point를 하나 만들고client side에서 정해진 규칙으로 데이터를 던지고 로직으로 분기해주면 편함.
![Page 50: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/50.jpg)
{ "type": "BOARD.CREATE", "data": { "title": "hello world", "content": "websocket" }}
client server
![Page 51: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/51.jpg)
![Page 52: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/52.jpg)
![Page 53: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/53.jpg)
SPRING
Servlet Reactive
Websocket
Sockjs STOMP
Websocket
![Page 54: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/54.jpg)
![Page 55: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/55.jpg)
![Page 56: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/56.jpg)
SPRING
Servlet Reactive
Websocket
Sockjs STOMP
Websocket
![Page 57: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/57.jpg)
STOMP
![Page 58: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/58.jpg)
![Page 59: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/59.jpg)
그저 빛...
![Page 60: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/60.jpg)
Data link
Physical
Network
Presentation
Transport
Session
Application
Network access & physical
Internet
Transport
Application
OSI 7 layer tcp/ip 4 layer
IP, IPvInternet6
TCP, UDP, QUIC
optional security: SSL, TLS
HTTP, FTP, WebSocket, STOMP, WebRTC
![Page 61: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/61.jpg)
Data link
Physical
Network
Presentation
Transport
Session
Application
Network access & physical
Internet
Transport - WebSocket
Application - STOMP
이런식으로 생각하면좀 편함
![Page 62: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/62.jpg)
websocket 위에 STOMP 프로토콜을 이용한다면?
![Page 63: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/63.jpg)
websocket
![Page 64: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/64.jpg)
websocket
프로토콜 설계클라/서버 구현
![Page 65: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/65.jpg)
websocket
프로토콜 설계클라/서버 구현
security
![Page 66: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/66.jpg)
websocket
프로토콜 설계클라/서버 구현
라우팅
security
![Page 67: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/67.jpg)
websocket
프로토콜 설계클라/서버 구현
라우팅
security
아키텍처/스케일아웃
![Page 68: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/68.jpg)
websocket
프로토콜 설계클라/서버 구현
라우팅
API 설계
security
아키텍처/스케일아웃
![Page 69: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/69.jpg)
websocket
프로토콜 설계클라/서버 구현
라우팅
API 설계
security
에러처리
아키텍처/스케일아웃
![Page 70: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/70.jpg)
websocket
프로토콜 설계클라/서버 구현
라우팅
API 설계
security
에러처리
STOMP
아키텍처/스케일아웃
![Page 71: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/71.jpg)
STOMP란? 링크Simple 간단한Text 텍스트 Oriented 기반 Message 메세지 Protocol 프로토콜
간단하고 오래된(마지막 버전인 1.2가 2012년 10월) 프로토콜,
프레임(Command + Header + Body) 단위로 구성
메세지큐의 동작을 프로토콜로 정의했다고 생각하면 편리함.
rabbitmq의 경우 plugin을 설치하면 사용 가능 (63613 port)
![Page 73: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/73.jpg)
(배경지식) 메세지큐(브로커) 개념
![Page 74: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/74.jpg)
![Page 75: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/75.jpg)
![Page 76: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/76.jpg)
![Page 77: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/77.jpg)
STOMP 프로토콜 동작 도식화
![Page 78: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/78.jpg)
ServerClient
![Page 79: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/79.jpg)
ServerClient
CONNECT
login: <id>password: <password>
^@
![Page 80: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/80.jpg)
ServerClient
CONNECTED
session: <session-id>
^@
![Page 81: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/81.jpg)
ServerClient
SUBSCRIBE
destination: /queue/fooack: client
^@
![Page 82: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/82.jpg)
ServerClient
SEND
destination: /queue/bar
hello world^@
![Page 83: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/83.jpg)
ServerClient
MESSAGE
destination: /queue/foomessage-id: <message-identifier>
hello world ^@
![Page 84: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/84.jpg)
ServerClient
ERRORSEND
destination: /queue/bar
hello world^@
![Page 85: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/85.jpg)
ServerClient
ERROR
message: malformed package recieved
The message:----
MESSAGE
destined: /queue/foo
Hello world----
error message^@
![Page 86: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/86.jpg)
ServerClient
UNSUBSCRIBE
destination: /queue/foo
^@
![Page 87: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/87.jpg)
ServerClient
DISCONNECT
^@
![Page 88: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/88.jpg)
transaction(BEGIN, COMMIT, ACK, ABORT), RECEIPT 있음.
자세한건 stomp 문서 참조.
![Page 89: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/89.jpg)
스프링이 websocket 위에 stomp 프로토콜을 구현하였고
이와함께 message broker와 spring security를그리고 spring mvc와 비슷한 개발 스타일을
사용할 수 있습니다.
![Page 90: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/90.jpg)
client server
worker
stomp
stomp
stomp
![Page 91: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/91.jpg)
메세지 전체 흐름
SEND
destination: /app/a
SEND
destination: /topic/a
SimpAnnotationMethod
MessageHandlerbroker
SimpleBroker
MessageHandler
MESSAGE
destination: /app/a
MESSAGE
destination: /topic/a
/app
/topic
/topic
res-
ponse
req-
uest
![Page 92: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/92.jpg)
websocket이 handshake 할 주소 설정
![Page 93: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/93.jpg)
SEND
destination: /app/a
SEND
destination: /topic/a
req-
uest
websocket이 handshake 할 주소 설정
![Page 94: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/94.jpg)
![Page 95: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/95.jpg)
SEND
destination: /app/a
SEND
destination: /topic/a
SimpAnnotationMethod
MessageHandlerbroker
SimpleBroker
MessageHandler
MESSAGE
destination: /app/a
MESSAGE
destination: /topic/a
/app
/topic
/topic
res-
ponse
req-
uest
![Page 96: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/96.jpg)
![Page 97: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/97.jpg)
client-side
javascript
![Page 98: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/98.jpg)
...
![Page 99: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/99.jpg)
SEND
destination: /app/a
SEND
destination: /topic/a
SimpAnnotationMethod
MessageHandlerbroker
SimpleBroker
MessageHandler
MESSAGE
destination: /app/a
MESSAGE
destination: /topic/a
/app
/topic
/topic
res-
ponse
req-
uest
![Page 100: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/100.jpg)
![Page 101: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/101.jpg)
1 : N 1 : 1
![Page 102: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/102.jpg)
client-side
javascript
![Page 103: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/103.jpg)
![Page 104: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/104.jpg)
SEND
destination: /app/a
SEND
destination: /topic/a
SimpAnnotationMethod
MessageHandlerbroker
SimpleBroker
MessageHandler
MESSAGE
destination: /topic/aMESSAGE
destination: /user/queue/a
/app
/topic
/topic
res-
ponse
req-
uest/app/event
![Page 105: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/105.jpg)
SEND
destination: /app/a
SEND
destination: /topic/a
SimpAnnotationMethod
MessageHandlerbroker
SimpleBroker
MessageHandler
MESSAGE
destination: /topic/aMESSAGE
destination: /user/queue/a
/app
/topic
/topic
res-
ponse
req-
uest/app/event
![Page 106: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/106.jpg)
SEND
destination: /app/a
SEND
destination: /topic/a
SimpAnnotationMethod
MessageHandlerbroker
SimpleBroker
MessageHandler
MESSAGE
destination: /topic/aMESSAGE
destination: /user/queue/a
/app
/topic
/topic
res-
ponse
req-
uest
/app/event
![Page 107: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/107.jpg)
SEND
destination: /app/a
SEND
destination: /topic/a
SimpAnnotationMethod
MessageHandlerbroker
SimpleBroker
MessageHandler
MESSAGE
destination: /topic/aMESSAGE
destination: /user/queue/a
/app
/topic
/topic
res-
ponse
req-
uest
/topic/message
![Page 108: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/108.jpg)
SEND
destination: /app/a
SEND
destination: /topic/a
SimpAnnotationMethod
MessageHandlerbroker
SimpleBroker
MessageHandler
MESSAGE
destination: /topic/aMESSAGE
destination: /user/queue/a
/app
/topic
/topic
res-
ponse
req-
uest
/topic/message
![Page 109: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/109.jpg)
SEND
destination: /app/a
SEND
destination: /topic/a
SimpAnnotationMethod
MessageHandlerbroker
SimpleBroker
MessageHandler
MESSAGE
destination: /topic/aMESSAGE
destination: /user/queue/a
/app
/topic
/topic
res-
ponse
req-
uest
/topic/message
![Page 110: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/110.jpg)
SEND
destination: /app/a
SEND
destination: /topic/a
SimpAnnotationMethod
MessageHandlerbroker
SimpleBroker
MessageHandler
MESSAGE
destination: /topic/aMESSAGE
destination: /user/queue/a
/app
/topic
/topic
res-
ponse
req-
uest
/topic/message
![Page 111: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/111.jpg)
개념적인건 이정도로하고 나머지는 간단히 훑어보겠습니다.
![Page 112: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/112.jpg)
![Page 113: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/113.jpg)
![Page 114: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/114.jpg)
security
![Page 115: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/115.jpg)
![Page 116: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/116.jpg)
![Page 117: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/117.jpg)
Scaleout
![Page 118: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/118.jpg)
메세지 흐름
SEND
destination: /app/a
SEND
destination: /topic/a
SimpAnnotationMethod
MessageHandlerbroker
SimpleBroker
MessageHandler
MESSAGE
destination: /app/a
MESSAGE
destination: /topic/a
/app
/topic
/topic
res-
ponse
req-
uest
EXTERNAL
MESSAGE BROKER
STOMP TCP
![Page 119: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/119.jpg)
"192.168.0.3"
![Page 120: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/120.jpg)
browser
websocket with stomp
persistence
layer
consumer application
이런식으로 구성 가능
spring websocket server
MESSAGE
BROKER
![Page 121: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/121.jpg)
browser
websocket with stomp
persistence
layer
consumer applicationconsumer application
이런식으로 구성 가능
spring websocket server
spring websocket server
MESSAGE
BROKER
![Page 122: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/122.jpg)
browser
websocket with stomp
persistence
layer
consumer applicationconsumer applicationconsumer application
이런식으로 구성 가능
spring websocket server
spring websocket server
spring websocket server
MESSAGE
BROKER
![Page 123: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/123.jpg)
browser
websocket with stomp
persistence
layer
consumer applicationconsumer applicationconsumer application
이런식으로 구성 가능
spring websocket server
spring websocket server
consumer application
MESSAGE
BROKER
메세지브로커를 사용함으로써
자연스럽게 디커플링!
유연해짐
![Page 124: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/124.jpg)
SPRING
Servlet Reactive
Websocket
Sockjs STOMP
Websocket
![Page 125: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/125.jpg)
![Page 126: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/126.jpg)
![Page 127: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/127.jpg)
SPRING
Servlet Reactive
Websocket
Sockjs STOMP
Websocket
지원안함
![Page 128: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/128.jpg)
websocket
![Page 129: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/129.jpg)
웹소켓을 사용하는 서비스
![Page 130: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/130.jpg)
웹소켓을 사용하는 서비스
![Page 131: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/131.jpg)
웹소켓을 사용하는 서비스
![Page 132: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/132.jpg)
웹소켓은 웹브라우저 전용 기술?
![Page 133: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/133.jpg)
![Page 134: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/134.jpg)
binary 데이터 전송
![Page 135: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/135.jpg)
{
"name": "boojongmin", "hello": "world","base64":"7JWI64WV7ZWY7IS47JqULg0KDQrquIDroZzrsowg7Zes7Iqk7LyA7Ja0IOyerO2ZnCDshpTro6jshZgg7JeF7LK07J24IOuEpOyYpO2Ome2KuOyXkOyEnCBYWFgg6rCc67Cc7J6Q66W8IOyxhOyaqSDspJHsl5Ag7J6I7Iq164uI64ukLg0K"
}
ajax로 바이너리 데이터 전송시보통 base64를 이용하여 인코딩.
보통 암호화하여 데이터 주고 받을때 경험
![Page 136: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/136.jpg)
![Page 137: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/137.jpg)
base64로 인코딩시원본대비 약 30% 증가
![Page 138: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/138.jpg)
socket api
![Page 139: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/139.jpg)
![Page 140: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/140.jpg)
rest api로 개발하는 것보다웹소켓으로 개발하는게 불편하다?
![Page 141: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/141.jpg)
프로젝트 구조├── client│ ├── node_modules│ ├── public│ └── src├── server│ ├── gradle│ └── src└── worker│ ├── gradle └── src
![Page 142: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/142.jpg)
client server
worker
stomp
stomp
stomp
![Page 143: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/143.jpg)
client server
worker
stomp
stomp
stomp 브라우저 - 서버 모두stomp를 이용하여pub/sub로 동작
![Page 144: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/144.jpg)
client server
worker
stomp
stomp
stomp fire and forgot
![Page 145: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/145.jpg)
client server
worker
stomp
stomp
stomp
![Page 146: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/146.jpg)
client server
worker
stomp
stomp
stomp
![Page 147: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/147.jpg)
client server
worker
stomp
stomp
stomp 메세지큐를 기반으로메세지를 주고받으므로 worker는 언어 독립적으로 구현 가능
![Page 148: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/148.jpg)
간단히 코드로 보면
![Page 149: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/149.jpg)
client
pub
sub
javascript, vuex
![Page 150: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/150.jpg)
server
java, spring
pub
sub
sub
pub
![Page 151: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/151.jpg)
server
server는 단순히 worker에게 이벤트를 전달만해주는 역할.
한번 만들어 두면 코드 추가가 없음.
java, spring
pub
sub
sub
pub
![Page 152: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/152.jpg)
worker
kotlin
sub
pub
![Page 153: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/153.jpg)
메세지의 흐름 - 클라이언트 요청
client
worker
DEPARTMENT.LIST
DEPARTMENT.LIST
DEPARTMENT.LIST
pub sub
pub
sub
![Page 154: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/154.jpg)
client
worker
DEPARTMENT.LIST
DEPARTMENT.LIST
DEPARTMENT.LIST
sub pub
sub
pub
메세지의 흐름 - 서버의 응답
![Page 155: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/155.jpg)
그리고 기존 ajax를 호출하는 방식과 비교해보면
![Page 156: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/156.jpg)
ajax
vuex
javascript, vuex
기존의 ajax 방식
![Page 157: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/157.jpg)
ajax
vuex
javascript, vuex
기존의 ajax 방식
![Page 158: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/158.jpg)
stomp를 이용한 vuejs
요청
응답
javascript, vuex
![Page 159: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/159.jpg)
stomp를 이용한 vuejs
요청
응답
javascript, vuex
동일한 이벤트명
![Page 160: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/160.jpg)
서버는 프로젝트 시작시tomcat을 띄우고 component들 scan하고 이 와 관련한 작업을 하면서
5초 이상걸리는 등 서버 리스타트할 때 가볍지는 않았다.(특히 프로젝트 규모가 커질수록 더 길어짐)
하지만 worker는 그냥 큐에 연결하고 간단한 구조라jar자체도 작고
기동 시간도 빠름.(1초 미만)
startup 속도가 빠르다는건 개발할때 생산성에 영향을 준다고 생각.
![Page 162: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/162.jpg)
![Page 163: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/163.jpg)
![Page 164: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/164.jpg)
제대로 rest api를 공부하기 쉽지않다.
나도 아직 모르겠다고 생각.
만들고 나면 누가 이건 restful하지 않다고 트집잡음.
뭔가 아직 부족하다고 느낌.
![Page 165: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/165.jpg)
rest api에 대해 클라이언트 입장도 들어보자Pain Points in Mobile Networking: REST API Failure
![Page 166: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/166.jpg)
rest api에 대해 클라이언트 입장도 들어보자
![Page 167: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/167.jpg)
rest api에 대해 클라이언트 입장도 들어보자
웹소켓을 통해 해결할 수 있는 내용은 아니지만 클라이언트 개발자가 restless란 단어에 대한 호감은 상당함.
![Page 168: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/168.jpg)
websocket + stomp를 쓰면restful api
요청/응답 관점에서
이벤트 기반 sub/pub으로 관점으로 바꿀수 있다고 생각.
![Page 169: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/169.jpg)
웹소켓은 커넥션을 유지하므로 비용이 클까?
![Page 170: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/170.jpg)
배경지식 tcp handshake
![Page 171: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/171.jpg)
서버클라이이언트
![Page 172: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/172.jpg)
서버클라이이언트
SYN
![Page 173: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/173.jpg)
서버클라이이언트
SYN
SYN / ACK
![Page 174: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/174.jpg)
서버클라이이언트
SYN
SYN / ACKACK
![Page 175: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/175.jpg)
서버클라이이언트
SYN
SYN / ACKACK
DATA
![Page 176: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/176.jpg)
서버클라이이언트
SYN
SYN / ACKACK
DATA
ACK
![Page 177: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/177.jpg)
서버클라이이언트
SYN
SYN / ACKACK
DATA
ACK
FIN
![Page 178: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/178.jpg)
서버클라이이언트
SYN
SYN / ACKACK
DATA
ACK
FIN
ACK
![Page 179: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/179.jpg)
서버클라이이언트
SYN
SYN / ACKACK
DATA
ACK
FIN
ACK
FIN
![Page 180: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/180.jpg)
서버클라이이언트
SYN
SYN / ACKACK
DATA
ACK
FIN
ACK
FIN
ACK
![Page 181: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/181.jpg)
커넥션을 유지하는 방식의 장점
![Page 182: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/182.jpg)
![Page 183: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/183.jpg)
‘hello’ echohttp과 websocket
![Page 184: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/184.jpg)
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET /text HTTP/1.1 Host: localhost:8080Upgrade: websocketConnection: UpgradeSec-WebSocket-Key: HelloSec-WebSocket-Version: 13
HTTP/1.1 101 Switching Protocolsupgrade: websocketconnection: upgradesec-websocket-accept: y7OAqGCGEjoPu6Ah1mY4X6i0inw=
hello
hello
![Page 185: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/185.jpg)
GET /text HTTP/1.1 Host: localhost:8080Upgrade: websocketConnection: UpgradeSec-WebSocket-Key: HelloSec-WebSocket-Version: 13
HTTP/1.1 101 Switching Protocolsupgrade: websocketconnection: upgradesec-websocket-accept: y7OAqGCGEjoPu6Ah1mY4X6i0inw=
hello
hello
hello
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
![Page 186: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/186.jpg)
GET /text HTTP/1.1 Host: localhost:8080Upgrade: websocketConnection: UpgradeSec-WebSocket-Key: HelloSec-WebSocket-Version: 13
HTTP/1.1 101 Switching Protocolsupgrade: websocketconnection: upgradesec-websocket-accept: y7OAqGCGEjoPu6Ah1mY4X6i0inw=
hello
hello
hello
hello
hello
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
![Page 187: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/187.jpg)
GET /text HTTP/1.1 Host: localhost:8080Upgrade: websocketConnection: UpgradeSec-WebSocket-Key: HelloSec-WebSocket-Version: 13
HTTP/1.1 101 Switching Protocolsupgrade: websocketconnection: upgradesec-websocket-accept: y7OAqGCGEjoPu6Ah1mY4X6i0inw=
hello
hello
hello
hello
hello
hello
hello
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
![Page 188: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/188.jpg)
GET /text HTTP/1.1 Host: localhost:8080Upgrade: websocketConnection: UpgradeSec-WebSocket-Key: HelloSec-WebSocket-Version: 13
HTTP/1.1 101 Switching Protocolsupgrade: websocketconnection: upgradesec-websocket-accept: y7OAqGCGEjoPu6Ah1mY4X6i0inw=
hello
hello
hello
hello
hello
hello
hello
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
hello 메세지를 받기 위해매번 http 전문을 만들어서 반복적으로 서버에 전달해야함.
![Page 189: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/189.jpg)
GET /text HTTP/1.1 Host: localhost:8080Upgrade: websocketConnection: UpgradeSec-WebSocket-Key: HelloSec-WebSocket-Version: 13
HTTP/1.1 101 Switching Protocolsupgrade: websocketconnection: upgradesec-websocket-accept: y7OAqGCGEjoPu6Ah1mY4X6i0inw=
hello
hello
hello
hello
hello
hello
hello
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
맺은 커넥션으로 보낼 데이터만 전달하면됨
![Page 190: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/190.jpg)
GET /text HTTP/1.1 Host: localhost:8080Upgrade: websocketConnection: UpgradeSec-WebSocket-Key: HelloSec-WebSocket-Version: 13
HTTP/1.1 101 Switching Protocolsupgrade: websocketconnection: upgradesec-websocket-accept: y7OAqGCGEjoPu6Ah1mY4X6i0inw=
hello
hello
hello
hello
hello
hello
hello
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
GET / HTTP/1.1Host: www.http2demo.ioConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://www.http2demo.io/Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9,ko;q=0.8Cookie: _ga=GA1.2.2099130577.1551581737; _gid=GA1.2.1138553140.1551581737If-None-Match: W/"5aa91b6d-19b00"
hello
HTTP/1.1 200 OKAccess-Control-Allow-Origin: *Cache-Control: no-cacheConnection: keep-aliveContent-Encoding: gzipContent-Type: text/htmlDate: Sun, 03 Mar 2019 03:14:33 GMTETag: W/"5aa91b6d-19b00"Server: CDN77-TurboTransfer-Encoding: chunkedX-Age: 30549494X-Cache: HIT
hello
웹소켓 대비 http 방식은 네트워크 비용이 큼
![Page 191: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/191.jpg)
rest와 websocket 성능 비교 - Hello World echo 참고링크
![Page 192: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/192.jpg)
Blocking IO
![Page 193: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/193.jpg)
NIO(Non-blocking IO)
![Page 194: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/194.jpg)
![Page 195: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/195.jpg)
![Page 196: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/196.jpg)
![Page 197: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/197.jpg)
마무리 정리..
![Page 198: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/198.jpg)
기존의 것을 바꾸자라는 이야기가 아닙니다.기술의 선택지를 넓히자는 이야기입니다.
![Page 199: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/199.jpg)
감사합니다.
![Page 200: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/200.jpg)
Q&A
질문 하시는개발자님은..
웹소켓을 들이셔야합니다.
![Page 201: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/201.jpg)
![Page 202: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/202.jpg)
![Page 203: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/203.jpg)
![Page 204: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/204.jpg)
Java
Kotlin
Spring Webflux
Kubernetes
Mongodb
Mysql
AWS
MSA
Devops
SPA
Vuejs
Android/IOS
Flutter
혹시 이런 이런것에 관심있으신지요?
Agile스런 agileDesign sprintScrum
mvp
미국 대상으로하는 서비스시장에 없는 서비스
야근 없음
애자일 신봉자 개발자 출신 상무(git 보면 밤에 코딩해서 push함)
좋은 동료
![Page 205: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/205.jpg)
Who am I?네오펙트 재직중.자바, 스프링, jpa, 자바스크립트, vuejs, mysql
facebook.com/boojongmin1
github.com/boojongmin
![Page 206: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/206.jpg)
transaction(BEGIN, COMMIT, ACK, ABORT), RECEIPT 있음.
자세한건 stomp 문서 참조.데이터에 대해 중요한 비지니스 로직인 경우트랜젝션을 사용하면 좋음.
특히 기존처럼 상태를 직접 변경하는 형태보다EventSourcing을 이용하면 commit/rollback이 편리해짐.(ex: BINLOG)
![Page 207: 기만콘 websocket with java · 2019-09-30 · 기만콘 websocket with java (java라고 쓰고 spring이라고 읽...) 부종민](https://reader030.vdocuments.mx/reader030/viewer/2022040104/5e67edd5afc5bf60eb212919/html5/thumbnails/207.jpg)