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

相关推荐
小蒜学长4 小时前
基于Python的动物救助站管理系统的设计与实现(代码+数据库+LW)
数据库·后端·python·django·动物救助
小小张说故事4 小时前
Python 中 __new__ 和 __init__ 到底谁才是构造函数?一文讲透区别与 5 个坑
后端·python
光依旧5 小时前
MCP实战手记(八):从“能跑“到“能上线“——无状态MCP Server的生产落地清单
java·人工智能·spring boot·架构·ai agent·mcp
用户847172102845 小时前
.shot 文件格式规范
前端·后端
hasty5 小时前
一次 WebSocket 握手为何能终止进程?Undici CVE-2026-19534 的异常边界
网络·websocket·网络协议
MZ_ZXD0015 小时前
【关注可白嫖源码】--课程设计--毕业设计-- 29210 Vue.js 3+Springboot中药材基本信息与图片查询系统
javascript·spring boot·课程设计·毕设·大作业·程序开发·毕设代做
wang_shu_mo_ran6 小时前
Spring IoC和DI概念篇
java·后端·spring
Cheney Pan6 小时前
第4篇 Spring Boot 应用监控:Micrometer 与 JVM 指标
jvm·spring boot·后端·prometheus
阿钱真强道6 小时前
30 嵌入式操作系统 | 上位机界面:Flask 网页显示 + 控制闭环
后端·python·flask
念何架构之路6 小时前
go-grpc服务端调用
开发语言·后端·golang