websocket of spring
TRANSCRIPT
웹 브라우저
웹 서버
주소입력링크클릭…
HTML 렌더링JS 실행
…
요청 처리
요청 응답
브라우저의 요청이 있어야 서버는 응답을 보낼 수 있다서버에서 이벤트가 발생하면 브라우저에 통지할 수 없다
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….. ( 이하 생략 )
Reference- http://www.websocket.org
- NDC12 실시간 HTTP 양방향 통신 – 이승재- http://www.codeproject.com/Articles/209041/HTML5-
Web-Socket-in-Essence#WebSocketInEssence