gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:44:24 25 4
gpt4 key购买 nike

最新版本的Spring WebSocket可与SockJSStompJS库配合使用。 但我不喜欢在我的应用程序中使用主题。那么如何使用HTML5 WebSocket API 创建Spring WebSocket应用程序并将我们的应用程序与Spring Security集成?

最佳答案

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

首先:创建一个扩展TextWebSocketHandlerBinaryWebSocketHandler并进行注释它带有@Component注释和重写其适当的方法。这个的工作方式类似于 Controller 中的处理程序方法。

@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 注释并重写其适当的方法。此使用我们已经创建的处理程序类

@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 Security配置中。

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

第四:我们使用适当的URL创建一个新的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 URL 格式:ws://domain:port/endpoint

关于spring - 如何使用 HTML5 WebSocket API 创建 Spring WebSocket 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39560619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com