SpringBoot集成WebSocket实现消息实时推送(提供git源码)
时间: 2025-06-29 08:04:04 浏览: 2
### Spring Boot WebSocket 实时消息推送示例
#### 项目概述
为了实现基于Spring Boot的WebSocket实时消息推送,可以采用`netty-websocket-http-spring-boot-starter`这一轻量级、高性能的WebSocket及HTTP框架[^1]。此starter简化了在Spring Boot应用中集成Netty WebSocket的过程。
#### Maven依赖配置
要在Spring Boot项目中启用WebSocket支持并利用上述提到的Starter库,需添加如下Maven依赖:
```xml
<dependency>
<groupId>com.ne</groupId>
<artifactId>netty-websocket-http-spring-boot-starter</artifactId>
<version>最新版本号</version>
</dependency>
```
注意替换`最新版本号`为实际发布的稳定版次。
#### 配置类定义
创建一个名为`WebSocketConfig.java`的配置文件来设置WebSocket端点和其他必要的参数:
```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 {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyWebSocketHandler(), "/ws").setAllowedOrigins("*");
}
}
```
这里注册了一个路径为`/ws`的手动处理器实例(`MyWebSocketHandler`),允许来自任何域的连接请求。
#### 自定义WebSocket处理程序
编写具体的业务逻辑处理器`MyWebSocketHandler.java`继承自`TextWebSocketHandler`或`BinaryWebSocketHandler`,根据需求选择适合的消息传输方式(text/binary):
```java
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
public class MyWebSocketHandler extends TextWebSocketHandler {
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
System.out.println("Received Message:" + message.getPayload());
// Echo back the received text to client
session.sendMessage(new TextMessage("Echo: " + message.getPayload()));
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
super.afterConnectionClosed(session, status);
System.out.println("Client disconnected.");
}
}
```
这段代码实现了简单的回声服务器模式——每当接收到客户端发送过来的信息时都会将其原样返回给对方;当会话结束时打印一条日志通知开发者。
#### 测试页面HTML模板
最后,在前端部分准备一个简易测试界面用于验证整个流程是否正常工作。下面是一个基本的例子:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>WebSocket Test Page</title>
<script type="text/javascript">
var wsUri = "ws://${server.address}:${server.port}/ws";
websocket = new WebSocket(wsUri);
function send() {
var input = document.getElementById('input');
websocket.send(input.value);
}
websocket.onmessage = function(evt){
console.log('received:' + evt.data);
};
</script>
</head>
<body>
<input id="input"/>
<button onclick="send()">Send</button>
</body>
</html>
```
通过以上步骤即可构建起一套完整的Spring Boot WebSocket解决方案,并能够实现实时双向通信的功能特性。
阅读全文
相关推荐


















