SockJS Protocol
SockJS Javascript Client
- 브라우저에서 사용되는 클라이언트 라이브러리SockJS Server
구현 - Spring-websocket 모듈을 통해 제공SockJS Java Client
- Spring-websocket 모듈을 통해 제공 (Spring v4.1~)GET /info
를 호출한다.모든 전송 요청은 다음의 URL 구조를 갖는다
https://host:port/app/endpoint/{server-id}/{session-id}/{transport}
- server-id : 클러스터에서 요청을 라우팅하는데 사용하나 이외에는 의미 없음
- session-id : SockJS session에 소속하는 HTTP 요청과 연관성 있음
- transport : 전송 타입 (예: websocket, xhr-streaming, xhr-polling)
WebSocket 전송은 WebSocket Handshaking을 위한 하나의 HTTP 요청을 필요로 한다. 모든 메세지들은 그 이후 사용했던 Socket을 통해 교환된다.
HTTP 전송은 보다 더 많은 요청을 필요로 한다.
Ajax/XHR Streaming은 서버 -> 클라이언트로의 메세지들을 위해 하나의 Long-running 요청이 있고, 추가적인 HTTP POST 요청은 클라이언트 -> 서버로의 메세지를 위해 사용된다.
Long Polling은 서버 -> 클라이언트로의 응답 후 현재의 요청을 끝내는 것을 제외하고는 XHR Streaming과 유사하다.
"O"(open frame)
: 초기에 전송하고, 메세지는 ["msg1", "msg2"]
와 같은 JSON-Encoded 배열로서 전달된다."h"(heartbeat frame)
: 기본적으로 25초간 메세지 흐름이 없는 경우에 전송한다."c"(close frame)
: 해당 세션을 종료한다.