Postman

웹 소켓은 서버와 클라이언트 사이에 소켓 커넥션을 유지하면서, 양방향 통신이 가능한 기술이다.
웹 소켓은 http의 handshake로 초기 통신을 시작한 후, 웹 소켓 프로토콜로 변환하여 데이터를 전송한다.

먼저 클라이언트는 서버에 HTTP 프로토콜로 핸드쉐이크 요청을 한다. 서버에서는 응답 코드를 101로 응답해준다.

웹 소켓을 위한 별도의 포트를 오픈해야 하나요 ?
그렇지 않다. HTTP 또는 HTTPS 통신 때 오픈한 포트를 사용한다. 웹 소켓은 HTTP포트 80와 HTTPS 443 위에서 동작하도록 설계가 되었다. 별도의 포트를 오픈할 필요가 없다. 위에서 설명했지만, 호환을 위해서 핸드 쉐이크는 HTTP upgrade 헤더를 사용하여, HTTP 프로토콜에서 웹 소켓 프로토콜로 변경한다.
ws와 wss차이점은 ?
일반적으로 우리는 보안을 위해서 HTTP 통신이 아닌 HTTPS 통신을 해야 한다. 웹소켓 통신 역시 ws가 아닌 wss로 통신해야 시큐어 통신이 가능하다. 여기에서는 편의상 ws통신으로 설명하겠지만, 회사 업무에서는 반드시 wss구축해야 한다.
웹 소켓 통신은 실시간 양방향 통신에 사용된다 !
웹 소켓은 일반적인 http 통신과 다르게 양방향 데이터를 실시간으로 전송할 수 있다. 그러기 위해서, 클라이언트는 서버에 소켓 연결을 한 상태로 유지된다. 언제든지 서버에서 보낸 데이터를 받을 준비를 하고 있는다. http 통신은 지속적으로 데이터를 요청하는 폴링의 방식을 사용해야 하지만, 웹 소켓은 그럴 필요가 없다. 그래서 , 더 낮은 부하를 사용하여 클라이언트 와 서버 간의 통신이 가능하다.
STOMP(Simple Text Oriented Messaging Protocol)의 약자로, 메시징 전송을 효율적으로 하기 위한 프로토콜로 pub&sub기반으로 동작한다.
WebSocketHandler를 직접 구현할 필요 없이 , @MessageMapping같은 어노테이션을 사용하여 메시지 발행시 엔드포인트를 별도로 분리해서 관리한다.