springboot 实现数据实时推送到前端(js+jsp)页面中
时间: 2024-03-27 15:37:18 浏览: 15
要实现数据实时推送到前端页面中,可以使用 WebSocket 技术。Spring Boot 对 WebSocket 的支持非常好,可以很方便地实现实时数据推送。
下面是一个简单的示例:
1. 首先,在 Spring Boot 项目中引入 WebSocket 相关依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
2. 创建一个 WebSocket 配置类,用于配置 WebSocket 相关信息:
```java
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myHandler(), "/myHandler").setAllowedOrigins("*");
}
@Bean
public WebSocketHandler myHandler() {
return new MyHandler();
}
}
```
这里注册了一个名为 "/myHandler" 的 WebSocket 处理器,用于处理客户端连接和消息发送。
3. 创建一个 WebSocket 处理器类,用于处理客户端连接和消息发送:
```java
public class MyHandler implements WebSocketHandler {
private List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
sessions.add(session);
}
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
// 处理消息
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
sessions.remove(session);
}
public void sendMessage(String message) {
for (WebSocketSession session : sessions) {
try {
session.sendMessage(new TextMessage(message));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
这里创建了一个名为 MyHandler 的 WebSocket 处理器,用于处理客户端连接和消息发送。在 afterConnectionEstablished 方法中,将连接的 WebSocketSession 对象保存到 sessions 列表中,以便后续发送消息时使用。在 handleTextMessage 方法中,处理接收到的消息。在 afterConnectionClosed 方法中,将关闭的 WebSocketSession 对象从 sessions 列表中移除。sendMessage 方法用于向所有客户端发送消息。
4. 在 Controller 中注入 MyHandler 对象,并在需要推送数据的地方调用 sendMessage 方法:
```java
@RestController
public class MyController {
@Autowired
private MyHandler myHandler;
@GetMapping("/pushData")
public void pushData(String data) {
myHandler.sendMessage(data);
}
}
```
这里创建了一个名为 MyController 的 Controller 类,用于接收客户端请求和推送数据。在 pushData 方法中,调用 MyHandler 的 sendMessage 方法向所有客户端推送数据。
5. 在前端页面中使用 WebSocket 进行连接和消息接收:
```javascript
var ws = new WebSocket("ws://localhost:8080/myHandler");
ws.onmessage = function(event) {
var data = event.data;
// 处理接收到的数据
};
```
这里创建了一个 WebSocket 对象,连接到名为 "/myHandler" 的 WebSocket 处理器。在 onmessage 方法中,处理接收到的数据。
以上是一个简单的 Spring Boot + WebSocket 实现数据实时推送到前端页面的示例。具体实现方式可以根据实际需求进行调整。