最新版本的 Spring WebSocket 适用于 SockJS 和 StompJS 库。 但我不想在我的应用程序中使用主题。那么如何使用HTML5 WebSocket API 创建Spring WebSocket应用程序并将我们的应用程序与 Spring Security 集成?
答案 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