2016-09-18 3 views

답변

2

sockjs없이 spring websocket을 구성하는 방법에 대한 좋은 예제를 찾을 수 없지만 스프링 문서 사이트에 도움이되는 documentation이 있으며이를 공유하고 싶습니다. HTML5 WebSocket API를 사용하여 Spring WebSocket 응용 프로그램을 만드는 방법은 무엇입니까?

첫째 :은 핸들러 메소드와 같은 작품을 이 BinaryWebSocketHandlerTextWebSocketHandler 또는 확장하는 클래스를 만들고 @Component 주석과 무시의 적절한 method.This 클래스와 주석 컨트롤러에서.

@Component 
public class SimpleWebSocketHandler extends TextWebSocketHandler { 
    @Override 
    protected void handleTextMessage(WebSocketSession session, 
      TextMessage message) throws Exception { 
     // Sends back response to client. 
     session.sendMessage(new TextMessage("Connection is all right.")); 
    } 
} 

둘째 : annoations 및 무시의 적절한 method.This 클래스를 구성 클래스그 구현 WebSocketConfigurer을 만들고 @Configuration@EnableWebSocket로 주석를 사용 처리기 클래스 이미 만들었습니다.

@Configuration 
@EnableWebSocket 
public class WebSocketConfigurations implements WebSocketConfigurer { 
    @Autowired 
    private SimpleWebSocketHandler simpleWebSocketHandler; 

    @Override 
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { 
     // Regsiters a handler for related endpoint. 
     registry.addHandler(simpleWebSocketHandler, "/chat"); 
    } 
} 

셋째 : 추가 모든 당신의 봄 보안 구성WebSokcet 엔드 포인트. 넷째

httpSecurity.authorizeRequests() 
    .antMatchers("/chat").permitAll(); 

: 우리가 만드는 새로운 적절한 URL와 자바 스크립트 웹 소켓 오브제.

// Create WebSocket Object. 
var ws = new WebSocket("ws://localhost:8080/chat"); 

// Runs when connecion is estabilished. 
ws.onopen = function() { 
    // Sends request to server with string value. 
    ws.send("webSocket"); 
}; 

// Runs when response is ready. 
// Use event to get response value. 
ws.onmessage = function (event) { 

}; 

참고 : 웹 소켓의 URL 형식 : ws://domain:port/endpoint

+0

당신을 감사합니다,하지만 난 스프링 웹 소켓을 사용할 수 있습니다 만 registry.addHandler (simpleWebSocketHandler, "/chat").setAllowedOrigins("*") 후; 그렇지 않으면 302 또는 403 오류가 발생합니다. Spring Security Configuration은 필자의 경우에는 도움이되지 않습니다. – user1742529