springboot接入websocket
时间: 2025-05-16 07:47:31 浏览: 22
### 集成 WebSocket 到 Spring Boot 项目的教程
要在 Spring Boot 项目中集成 WebSocket,可以利用 `spring-boot-starter-websocket` 模块来简化开发过程。以下是关于如何完成这一目标的具体说明。
#### 添加依赖项
为了启用 WebSocket 支持,在构建工具的配置文件(Maven 或 Gradle)中添加以下依赖:
对于 Maven 用户:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
对于 Gradle 用户:
```groovy
implementation 'org.springframework.boot:spring-boot-starter-websocket'
```
此依赖包含了必要的组件以支持 WebSocket 协议[^1]。
#### 启用 WebSocket 配置
创建一个配置类并标注为 `@Configuration` 和 `@EnableWebSocket` 来激活 WebSocket 功能。在此类中定义一个消息处理器 (`WebSocketHandler`) 实现具体的逻辑处理。
```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("*");
}
}
```
上述代码片段展示了如何注册自定义的消息处理器到指定路径 `/ws` 上,并允许跨域请求设置。
#### 定义 WebSocket 处理器
接下来需要编写实际负责接收和发送数据的对象——即继承于 `TextWebSocketHandler` 类型或者实现接口 `WebSocketHandler` 的类。下面是一个简单的例子:
```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);
// Echo back the received message with a prefix.
session.sendMessage(new TextMessage("Echo: " + payload));
}
}
```
这段代码实现了当接收到文本消息时打印日志并将原内容加上前缀返回给客户端的功能。
#### 使用@SpringBootApplication 注解启动应用程序
最后一步是在主入口点处使用 `@SpringBootApplication` 注解标记该类以便自动装配整个上下文中所需的 Bean 。同时确保存在标准形式的静态方法 main() 负责引导运行流程[^2]:
```java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
```
至此已经完成了基本的 WebSocket 集成功能。如果希望进一步提升性能,则可考虑引入反应式编程模型如 Project Reactor 结合 WebFlux 构建更高效的解决方案[^3]。
阅读全文
相关推荐


















