스프링 websocket 예제

STOMP 프로토콜에는 CONNECT 프레임에 “로그인” 및 “암호” 헤더가 있습니다. 이러한 제품은 원래 TCP를 통해 STOMP를 위해 설계되었으며 여전히 필요합니다. 그러나 기본적으로 WebSocket을 통해 STOMP의 경우 Spring은 STOMP 프로토콜 수준에서 권한 부여 헤더를 무시하고 사용자가 HTTP 전송 수준에서 이미 인증되었다고 가정하고 WebSocket 또는 SockJS 세션에 인증된 사용자가 포함될 것으로 예상합니다. 언제나 처럼 GitHub에서 예제의 전체 소스 코드를 통해 사용할 수 있습니다. 다음은 위의 예제에 대한 메시지 흐름을 설명합니다: 따라서 WebSocket 핸드셰이크 또는 SockJS HTTP 전송 요청의 경우 일반적으로 HttpServletRequest#getUserPrincipal()를 통해 액세스할 수 있는 인증된 사용자가 이미 있을 것입니다. Spring은 해당 사용자를 위해 만든 WebSocket 또는 SockJS 세션과 자동으로 연결한 다음 사용자 헤더를 통해 해당 세션을 통해 전송되는 모든 STOMP 메시지와 연결합니다. Spring Boot는 독립 실행형 응용 프로그램 또는 마이크로 서비스를 보다 쉽게 구현할 수 있는 Java 기반 프레임워크입니다. 다양한 제품 및 프레임워크와의 통합을 크게 단순화하기 때문에 일반적으로 사용됩니다. 또한 포함된 웹 서버가 포함되어 있으므로 WAR 파일을 배포할 필요가 없습니다. 이 예제에서는 구성된 대상에 전송된 출력 메시지를 나타내기 위해 OutputMessage라는 다른 모델 개체를 만듭니다. 수신 메시지에서 가져온 보낸 사람과 메시지 텍스트로 개체를 채우고 타임스탬프를 보강합니다.

자세한 내용을 보려면 브라우저에서 예제를 실행하고 HTTP 요청을 시청합니다. SockJS 클라이언트는 전송 목록을 수정할 수 있으므로 각 전송을 한 번에 하나씩 볼 수 있습니다. SockJS 클라이언트는 또한 브라우저 콘솔에서 유용한 메시지를 가능하게 하는 디버그 플래그를 제공합니다. 서버 측에서 org.springframework.web.socket에 대한 TRACE 로깅을 사용하도록 설정합니다. 더 자세한 내용은 SockJS 프로토콜 내레이션 테스트를 참조하십시오. 이 예제에서는 Websocket 종속성이 필요합니다. 또한 Gradle을 사용하려고 하므로 Gradle 프로젝트를 생성하도록 변경하려고 합니다. 또한 JSON을 사용하여 메시지 본문을 작성하므로 Jackson 종속성을 추가해야 합니다. 이렇게 하면 Spring에서 JSON에서 Java 개체를 변환할 수 있습니다 @Configuration @SpringBootApplication. 또한 @EnableWebSocketMessageBroker 개의 추가되었습니다. 이름에서 알 수 있듯이 @EnableWebSocketMessageBroker 메시지 브로커가 지원하는 WebSocket 메시지 처리를 지원합니다.