spring sockjs 예제

AbstractWebSocketMessageBrokerConfigurer를 확장 하는 필수 는 아니지만 빠른 예제에서는 가져온 된 구성을 사용자 지정 하는 것이 더 쉽습니다. registerStoendpoints 메서드는 “/채팅” 끝점을 등록하여 스프링의 STOMP 지원을 가능하게 합니다. 우리는 또한 여기에 탄력을 위해 SockJS없이 작동하는 끝점을 추가하고 있음을 명심하십시오. 스프링 프레임워크 가이드의 한 가지 단점은 서버와 통신하기 위해 Java/Spring 클라이언트를 구현하는 데 대한 정보가 표시되지 않는다는 것입니다. 이 문서에서는 해당 문제를 해결합니다. 보시다시피 구현에는 올바른 계산이 필요합니다. 요즘 웹 응용 프로그램은 종종 REST API를 백 엔드 및 OAuth/JWT 토큰으로 사용하여 사용자 인증 및 권한 부여를 사용합니다. WebSocket 프로토콜은 HTTP 핸드셰이크 중에 서버가 클라이언트를 인증하는 방법을 설명하지 않습니다. 실제로 표준 HTTP 헤더(예: 권한 부여)는 이 용도로 사용됩니다. 안타깝게도 모든 STOMP 클라이언트에서 지원되지는 않습니다.

Spring Java의 STOMP 클라이언트는 핸드셰이크에 대한 헤더를 설정할 수 있습니다. XML의 한 줄이 없다는 것을 알게 되었습니까? 웹.xml 파일도 없습니다. 이 웹 응용 프로그램은 100 % 순수 Java이며 배관 이나 인프라 구성을 처리 할 필요가 없습니다. @SpringBootApplication 다음을 모두 추가하는 편리한 추가 사항입니다: 많은 웹 응용 프로그램은 쿠키 기반 인증을 사용합니다. 예를 들어 Spring Security를 사용하여 특정 페이지 또는 컨트롤러에 대한 액세스를 기록된 사용자로만 제한할 수 있습니다. 그런 다음 나중에 해당 사용자를 위해 만든 WebSocket 또는 SockJS 세션과 연결된 쿠키 기반 HTTP 세션을 통해 사용자 보안 컨텍스트가 유지됩니다. WebSockets 끝점은 봄의 WebSecurityConfigurerAdapter에서 와 같은 다른 요청으로 보호할 수 있습니다. @EnableAutoConfiguration 클래스 경로 설정, 다른 콩 및 다양한 속성 설정에 따라 콩을 추가하기 시작 하도록 스프링 부팅을 알려줍니다. 스프링 부트 gradle 플러그인은 많은 편리한 기능을 제공합니다 : 우선, 우리는 sockjs을 가져 와서 자바 스크립트 클라이언트 라이브러리를 밟아야합니다. 다음으로, 우리는 우리의 엔드 포인트와의 통신을 여는 connect() 함수를 만들 수 있습니다., 우리의 STOMP 메시지를 보낼 수 있는 sendMessage() 함수 및 연결을 닫는 연결 끊기() 함수: 웹 브라우저 클라이언트는 서버와의 상호 작용을 표시 하 고 푸시 하는 방법 서버의 메시지를 수신하고 처리할 수 있습니다.

마지막으로 Spring 클라이언트는 WebSocket 서버와 통신하고 메시지 항목을 구독하는 방법을 보여 줍니다. 이 자습서에서는 봄의 WebSocket 지원을 살펴보았습니다. 우리는 서버 측 구성을 보았고 sockjs 및 Stomp Javascript 라이브러리를 사용하여 간단한 클라이언트 측 대응을 구축했습니다. configureMessageBroker() 메서드는 WebSocketMessageBrokerConfigurer에서 기본 메서드를 구현하여 메시지 브로커를 구성합니다. 간단한 메모리 기반 메시지 브로커가 “/topic”로 접두번된 대상에서 인사말 메시지를 클라이언트로 다시 전달할 수 있도록 enableSimpleBroker()를 호출하는 것으로 시작합니다. 또한 @MessageMapping 개의 추가된 메서드에 바인딩된 메시지에 대해 “/app” 접두사를 지정합니다. 이 접두사는 모든 메시지 매핑을 정의하는 데 사용됩니다. 예를 들어 “/app/hello”는 GreetingController.greeting() 메서드가 처리하도록 매핑되는 끝점입니다. 웹소켓 서버에 사용되는 스프링 프레임워크는 서버와 클라이언트 모두에 대해 WebSocket용 모듈을 제공합니다.

About the author: mcadmin