在Spring Boot中集成WebSocket,你通常可以使用Spring框架提供的WebSocket支持,包括STOMP(Simple Text Orientated Messaging Protocol)和SockJS(用于浏览器和WebSocket服务器之间的通信的库,提供了多种传输方式)。以下是一个基本的步骤来在Spring Boot应用程序中集成WebSocket:
添加依赖
在你的pom.xml(Maven)或build.gradle(Gradle)中添加Spring Boot的WebSocket和STOMP支持的相关依赖。
对于Maven,你可能需要添加spring-boot-starter-websocket和spring-messaging(如果它没有被包含在starter中):
xml
org.springframework.boot
spring-boot-starter-websocket
对于Gradle,在build.gradle中添加:
gradle
implementation 'org.springframework.boot:spring-boot-starter-websocket'
配置WebSocket
在你的配置类上添加@EnableWebSocketMessageBroker注解,并配置消息代理(message broker)和消息前缀(prefix)。
java
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").withSockJS(); // 设置WebSocket端点并启用SockJS
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic"); // 设置消息代理前缀
registry.setApplicationDestinationPrefixes("/app"); // 设置应用端点前缀
}
// 其他配置...
}
创建WebSocket控制器
使用@Controller和@MessageMapping注解来创建WebSocket控制器,处理来自客户端的消息。
java
@Controller
public class WebSocketController {
@MessageMapping("/hello") // 监听客户端发送到"/app/hello"的消息
@SendTo("/topic/greetings") // 将响应发送到"/topic/greetings"
public Greeting greeting(HelloMessage message) throws Exception {
// 处理消息并返回响应
Thread.sleep(1000); // 模拟延迟
return new Greeting("Hello, " + message.getName() + "!");
}
// 定义消息对象...
// ...
}
前端客户端代码
在前端,你可以使用SockJS和STOMP客户端库来连接WebSocket服务器并发送/接收消息。
javascript
var socket = new SockJS('/ws'); // 连接到WebSocket端点
var stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
stompClient.subscribe('/topic/greetings', function(greeting){
// 显示接收到的消息
console.log(JSON.parse(greeting.body).content);
});
// 发送消息到"/app/hello"
stompClient.send("/app/hello", {}, JSON.stringify({'name': 'John Doe'}));
});
运行和测试
启动你的Spring Boot应用程序,并使用前端代码(可能是HTML页面和JavaScript)连接到WebSocket服务器,并发送和接收消息。
注意:以上代码是一个简化的例子,用于展示Spring Boot中WebSocket的基本集成。在实际应用中,你可能需要添加错误处理、安全性、消息序列化/反序列化等额外的功能。