Sock.js (client)

hyunheal·2022년 2월 20일
0

JavaScript

목록 보기
4/5

클라이언트-서버간 연결 방식을 정한다.

우선적으로 WebSocket연결을 사용하도록 하지만, 사용할 수 없는 경우에는 HTTP-Streaming or HTTP long polling 형식으로 대체한다.

브라우저의 한 도메인에서는 하나의 연결만 가능하다.



초기화

const client = new SockJs(url, protocols, options)
  • url
    • 최초에 핸드셰이킹을 할 url (http or https)
    • 이 url로 GET 요청을 보내서 서버로부터 기본 정보를 얻는다.
    • Sock.js는 url이 유효한지 판단한 뒤 핸드셰이킹을 한다.
  • protocols
    • 서브 프로토콜 목록 설정
    • array 형태로 준다.
    • default: []
  • options
    • Sock.js가 연결을 시도할 때 필요한 옵션들 (server, transports, sessionId, timeout 등)
    • transports설정으로 통신에 사용할 프로토콜을 결정한다.
    • default: 시도할 수 있는 모든 연결 (websocket, http streaming, http long polling 등)



핸드셰이킹

최초에 설정한 url로 GET 요청을 통해 필요한 정보를 얻는다.

GET/info 요청을 보내서 서버가 응답한 메시지를 토대로 앞으로 통신에 사용할 프로토콜을 결정한다.
우선순위는 다음과 같다.

  1. WebSocket통신
  2. http streaming통신
  3. http long polling통신


Transports Request 형식

Sock.js를 이용한 연결의 요청형식은 다음과 같다.

http://host:port/myApplication/myEndpoint/{server-id}/{session-id}/{transport}
  • server-id: 클러스터에서 요청을 라우팅하는데 사용
  • session-id: 연결을 구분하기 위한 id
  • transport: 전송 타입


Heartbeat

Sock.js는 서버가 주기적으로 Heartbeat message를 전송하며, 이를 이용하여 연결이 끊겼다고 판단하지 않도록 한다.



참고

profile
FE 초짜

0개의 댓글