Spring Boot如何集成WebSocket

在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的基本集成。在实际应用中,你可能需要添加错误处理、安全性、消息序列化/反序列化等额外的功能。

相关推荐
陈随易19 小时前
编程语言级别的Skill市场,AI Agent 的未来形态
前端·后端·程序员
IT_陈寒1 天前
Vite的热更新突然不香了,排查三小时差点砸键盘
前端·人工智能·后端
子兮曰1 天前
Agency-Agents 深度解析:400+ AI 专家的"梦之队"如何重塑开发工作流
前端·后端·vibecoding
用户8356290780511 天前
Python 实现 PDF 文件加密与解密方法
后端·python
小满zs1 天前
Go语言第二章(小无相功)
后端·go
用户8356290780511 天前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
karry_k1 天前
MyBatis批量insert-select踩坑:useGeneratedKeys=true 可能让PostgreSQL返回大量插入结果
java·后端
妙码生花1 天前
从 PHP 到 AI + Golang,程序员自救转型手记(十九):点选验证码代码逐行目检
前端·后端·go
贰先生1 天前
Xiuno BBS X版 用户封禁系统
后端
karry_k1 天前
PostgreSQL 在 MyBatis 中执行正常 SQL 失效:一次 DELETE USING 踩坑记录
java·后端