springBoot websocket
时间: 2025-05-16 22:49:32 浏览: 12
### Spring Boot 中 WebSocket 的集成与使用
#### 集成 WebSocket 到 Spring Boot 应用程序
要在 Spring Boot 项目中启用 WebSocket 支持,需完成以下配置:
1. **引入依赖项**
在 `pom.xml` 文件中添加 WebSocket 所需的 Maven 或 Gradle 依赖项。以下是基于 Maven 的示例:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
2. **创建 WebSocket 配置类**
创建一个 Java 类来定义 WebSocket 的行为并注册端点。此过程可以通过实现 `WebSocketConfigurer` 接口以及重写其方法来完成。
下面是一个简单的配置类示例[^3]:
```java
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
private final MyWebSocketHandler myWebSocketHandler;
public WebSocketConfig(MyWebSocketHandler myWebSocketHandler) {
this.myWebSocketHandler = myWebSocketHandler;
}
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myWebSocketHandler, "/ws").setAllowedOrigins("*");
}
}
```
3. **编写自定义 WebSocket 处理器**
自定义处理器用于处理客户端发送的消息并与之交互。下面展示了一个基本的处理器实现[^4]:
```java
import org.springframework.stereotype.Component;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
@Component
public class MyWebSocketHandler extends TextWebSocketHandler {
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
String payload = message.getPayload();
System.out.println("Received Message: " + payload);
session.sendMessage(new TextMessage("Echo: " + payload));
}
}
```
4. **测试 WebSocket 连接**
使用 JavaScript 测试前端连接至 WebSocket 端点 `/ws` 并验证消息传递功能。例如,在 HTML 页面上可以这样操作:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>WebSocket Test</title>
</head>
<body>
<script type="text/javascript">
var socket = new WebSocket('ws://localhost:8080/ws');
socket.onopen = function() {
console.log('Connection opened!');
socket.send('Hello Server!');
};
socket.onmessage = function(event) {
console.log('Message from server:', event.data);
};
</script>
</body>
</html>
```
#### RSocket 和 WebSocket 的区别
需要注意的是,虽然两者都可以通过 Web 协议传输数据,但它们的设计目标不同。RSocket 是一种更高级别的协议,支持请求响应、流式通信等多种模式;而 WebSocket 主要提供全双工通道以便实时通讯。如果需要在 Reactive 编程模型下使用 RSocket,则应按照特定条件设置映射路径和传输方式[^1]。
---
###
阅读全文
相关推荐













