[Spring WebSocket] SockJS
·
Spring/WebSocket
SockJS는 왜 생겼을까?이전 포스팅에서 클라이언트-서버 간에 `WebSocket` 연결과 메시지 주고 받는 방법에 대해 살펴보았다.그런데, 클라이언트-서버 `WebSocket` 통신이 순탄하게만 진행될 수 있을까?아니다.그럼, 발생할 수 있는 예외 상황은 어떤 것이 있을지 살펴보자. 우선, 모든 클라이언트의 브라우저에서 WebSocket을 지원한다는 보장이 없다. 두 번째로, 클라이언트/서버 중간에 위치한 프록시가 Upgrade 헤더를 해석하지 못해 서버에 전달하지 못할 수 있다. 마지막으로, 클라이언트/서버 중간에 위치한 프록시가 유휴 상태에서 도중에 커넥션 종료시킬 수도 있다.  이러한 문제는 `WebSocket Emulation`을 통해서 해결이 가능하다.`WebSocket Emulation` ..
[Spring WebSocket] WebSocket
·
Spring/WebSocket
WebSocket 이란?`WebSocket` 프로토콜은 표준 된 방법으로 `서버-클라이언트` 간에 단일 TCP 커넥션을 이용해서양방향 통신을 제공한다. 특징기존의 다른 TCP 기반의 프로토콜과 다르게,`WebSocket`은 HTTP 요청 기반으로 WebSocket HandShake 과정을 거쳐 커넥션을 생성한다.(기존의 TCP 3-way Handshake와는 달리 HTTP 요청을 활용해 연결을 시작한 후, 연결이 확립되면 TCP로 전환) 덕분에, 초기 WebSocket HandShake 요청은 추가적인 방화벽 설정 없이 80, 443 포트를 사용하여양방향 통신이 가능하다. 또한 HTTP 규격 그대로 유지할 수 있기 때문에 HTTP 인증, CORS 등을 동일하게 적용할 수 있다는 장점이 있다.  커넥션 F..