2016-09-18 93 views

回答

2

我找不到任何有關如何配置沒有sockjs的彈簧websocket的好例子,但我在春季文檔站點找到了一些有用的documentation,我想分享一下。 那麼,如何使用HTML5 WebSocket API創建Spring WebSocket應用程序?

第一:創建延伸TextWebSocketHandlerBinaryWebSocketHandler@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.")); 
    } 
} 

二:創建配置類工具WebSocketConfigurer@Configuration@EnableWebSocket將其標註爲 annoations和覆蓋其適當method.This 使用我們已經創建了Handler Class

@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(); 

四:我們創建一個新的JavaScript 的WebSocket OBJET適當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) { 

}; 

注:WebSocket的網址格式:ws://domain:port/endpoint

+0

謝謝你,但我可以使用Spring的WebSocket後才 registry.addHandler(simpleWebSocketHandler, 「/chat").setAllowedOrigins("*」); 否則我得到302或403錯誤。在我的情況下,Spring Security Configuration沒有什麼幫助。 – user1742529