websocket of spring

26
WebSocket 그그그 Spring4.0 2015.11.29 http://pigbrain.github.io 그그그

Upload: hyun-dong-lee

Post on 21-Mar-2017

32 views

Category:

Technology


1 download

TRANSCRIPT

WebSocket 그리고 Spring4.0

2015.11.29

http://pigbrain.github.io

이현동

HTTP - 웹 브라우저와 웹 서버가 통신하는 규약 - 요청 / 응답 형태

웹 브라우저

웹 서버

주소입력링크클릭…

HTML 렌더링JS 실행

요청 처리

요청 응답

브라우저의 요청이 있어야 서버는 응답을 보낼 수 있다서버에서 이벤트가 발생하면 브라우저에 통지할 수 없다

Facebook 메신저 Gmail 메신저

어떻게 만듬 ??

웹 브라우저

웹 서버

onTimer()

요청 빈 응답

onTimer() onTimer()

응답

Polling

트래픽 통신할 필요가 없어도 요청 / 응답 발생

서버 부하 요청 / 응답이 계속 발생하니까 ..

지연시간 요청 간격에 따라 응답 시간도 달라짐

Polling

웹 브라우저

웹 서버

요청 응답

Long Polling

기다린다 이벤트가 발생하면응답을 보낸다 기다린다

응답 처리 후 다음 요청을 보낸다

웹 브라우저

웹 서버

요청 응답

Long Polling

저장해둔 이벤트를 보낸다 기다린다

응답 처리 후 다음 요청을 보낸다

이벤트 발생 대기중인 요청이 없을 경우 일단 저장 !

복잡하다 이전에 발생한 이벤트가 있는지 ,, 대기중인 요청이 있는지 ,,

지연시간 요청 이전에 이벤트가 발생하면 바로 응답을 보낼 수가 없다

Long Polling

WEBSOCKET(HTML5)

웹 브라우저

웹 서버

HandShake

WebSocket

CONNECT(WebSocket Hand-

Shake)Send

Send

Receive

Receive

WebSocket

트래픽서버부하

지연시간복잡하다

WebSocket

포트 - HTTP (80) - HTTPS (443)

URL - http://www.websockets.org - ws://www.websockets.org

WebSocket HandShake

웹소켓으로 연결 하기 위해서웹브라우저와 웹서버는 HandShake 과정을 거쳐야 한다

WebSocket HandShake

웹 브라우저

웹 서버

CONNECT(WebSocket Hand-

Shake)

WebSocket HandShake

요청 응답

Sec-WebSocket-Key : Base64 로 인코딩된 랜덤한 16 바이트의 문자열Sec-WebSocket-Version : 무조건 13 !

Updage : “websocket” 키워드가 반드시 있어야 한다

Connection : “Upgrade” 토큰이 반드시 있어야 한다

WebSocket HandShake

요청 응답

Sec-WebSocket-Key : Base64 로 인코딩된 랜덤한 16 바이트의 문자열Sec-WebSocket-Key + “258EAFA5-E914-47DA-95CA-C5AB0DC85B11” -> uRovscZjNol/umbTt5uKmw==258EAFA5-E914-47DA-95CA-C5AB0DC85B11

-> SHA-1 으로 해싱 -> acb1c2930fd22ac3 bd1801ff65216104 04c32ab5

-> Base64 로 인코딩 ->rLHCkw/SKsO9GAH/ZSFhBATDKrU=

WebSocket Frame

웹소켓 HandShake 완료 후 정해진 데이터 Frame 에 따라 양방향 통신이 가능

application data : 0x00 Hello World 0xFF….. ( 이하 생략 )

Sprint 4.x(WEBSOCKET)

1. web.xml

2. Configuration

ws://localhost:8080/chat

3. Handler (Controller)

소켓 연결 완료메시지 수신

메시지 전송

소켓 연결 종료

JavsScript(WEBSOCKET)

소켓 연결 완료

메시지 수신

소켓 끊어짐

메시지 전송

Reference- http://www.websocket.org

- NDC12 실시간 HTTP 양방향 통신 – 이승재- http://www.codeproject.com/Articles/209041/HTML5-

Web-Socket-in-Essence#WebSocketInEssence