웹소켓 핸드쉐이크란 서버와 클라이언트 간 웹소켓 연결을 시작하는 과정이다.
웹소켓은 클라이언트에서 헨드쉐이크 요청을 보내서 HTTP Upgrade를 하고 이에 대한 응답으로 헨드쉐이크 응답을 받는다 (응답 코드 : 101 )
GET /spring-websocket-portfolio/portfolio HTTP/1.1
Host: localhost:8080
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: Uc9l9TMkWGbHFD2qnFHltg==
Sec-WebSocket-Protocol: v10.stomp, v11.stomp
Sec-WebSocket-Version: 13
Origin: <http://localhost:8080>
Connection : upgrade
: 현재 전송 완료 후 네트워크 접속 유지 여부에 대한 헤더로 웹소켓 요청에서는 반드시 Upgrade를 갖는다. 이 값이 없으면 접속을 중지한다.Upgrade: websocket
: 프로토콜 전환을 위한 헤더로 웹소켓 요청 시에는 반드시 websocket을 값으로 갖는다. 해당 값이 비어있으면 cross-protocol attack으로 간주하여 접속을 중지한다.Sec-WebSocket-Key: Uc9l9TMkWGbHFD2qnFHltg==
: 서버가 웹소켓 헨드쉐이크 요청을 적절하게 처리할 수 있도록 부여된 키Sec-WebSocket-Protocol :v10.stomp, v11.stomp
: 사용하고자 하는 웹소켓 프로토콜들을 지정HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: 1qVdfYHU9hPOl4JYYNXF623Gzn0=
Sec-WebSocket-Protocol: v10.stomp