如何使用HTML5 WebSocket API创建Spring WebSocket应用程序?

时间:2016-09-18 17:30:14

标签: spring spring-mvc spring-boot spring-websocket

最新版本的 Spring WebSocket 适用于 SockJS StompJS 库。 但我不想在我的应用程序中使用主题。那么如何使用HTML5 WebSocket API 创建Spring WebSocket应用程序并将我们的应用程序与 Spring Security 集成?

1 个答案:

答案 0 :(得分:3)

我找不到关于如何在没有sockjs的情况下配置spring websocket的任何好例子,但我在spring文档站点中找到了一些有用的documentation,我想分享一下。 那么,如何使用HTML5 WebSocket API创建Spring WebSocket应用程序?

首先:创建一个 扩展 TextWebSocketHandler BinaryWebSocketHandler 和Annotate它使用 @Component 注释和覆盖其适当的方法。此的工作方式类似于控制器中的处理程序方法。

@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和覆盖其适当的方法。这个 Class 使用我们已经创建的 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端点添加到 Spring安全配置

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

第四:我们使用适当的网址创建新的 javascript WebSocket对象

// 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