要实时将最新数据传给前端,可以使用 WebSocket 技术。WebSocket 是一种双向通信协议,可以在客户端和服务器之间建立持久的连接,并实现实时通信。

Spring Boot 提供了实现 WebSocket 的支持。可以通过添加 spring-boot-starter-websocket 依赖来启用 WebSocket 支持。在应用程序中,可以创建一个 WebSocket 处理器来处理来自客户端的消息,并向客户端发送消息。

下面是一个简单的示例:

  1. 添加依赖

pom.xml 文件中添加以下依赖:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
  1. 创建 WebSocket 处理器

创建一个类,实现 WebSocketHandler 接口,处理来自客户端的消息,并向客户端发送消息。例如:

@Component
public class MyWebSocketHandler implements WebSocketHandler {

   private List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();

   @Override
   public void afterConnectionEstablished(WebSocketSession session) throws Exception {
       sessions.add(session);
   }

   @Override
   public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
       String payload = message.getPayload().toString();
       // 处理消息
       sendMessageToAll(payload);
   }

   @Override
   public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
       sessions.remove(session);
   }

   @Override
   public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
       sessions.remove(session);
   }

   @Override
   public boolean supportsPartialMessages() {
       return false;
   }

   private void sendMessageToAll(String message) {
       TextMessage textMessage = new TextMessage(message);
       for (WebSocketSession session : sessions) {
           try {
               session.sendMessage(textMessage);
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
   }
}

在这个处理器中,使用 CopyOnWriteArrayList 来存储 WebSocketSession,以便在连接建立、连接关闭或传输错误时处理。在 afterConnectionEstablished 方法中,将 WebSocketSession 添加到 sessions 列表中。在 handleMessage 方法中,处理来自客户端的消息,并调用 sendMessageToAll 方法将消息发送给所有 WebSocketSession。在 handleTransportError 方法中,从 sessions 列表中删除 WebSocketSession。在 afterConnectionClosed 方法中,从 sessions 列表中删除 WebSocketSession

  1. 配置 WebSocket

在应用程序中添加 WebSocket 配置。例如:

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

   @Autowired
   private MyWebSocketHandler myWebSocketHandler;

   @Override
   public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
       registry.addHandler(myWebSocketHandler, '/my-websocket').setAllowedOrigins('*');
   }
}

在这个配置中,使用 @EnableWebSocket 注解启用 WebSocket 支持。在 registerWebSocketHandlers 方法中,将 MyWebSocketHandler 添加到 WebSocketHandlerRegistry 中,并指定 WebSocket 处理器的路径和允许的来源。

  1. 在前端使用 WebSocket

在前端使用 WebSocket,可以使用 JavaScript 的 WebSocket API。例如:

var socket = new WebSocket('ws://localhost:8080/my-websocket');

socket.onmessage = function(event) {
   // 处理消息
};

在这个示例中,创建一个 WebSocket 对象,连接到 WebSocket 服务端。在 onmessage 方法中,处理来自 WebSocket 服务端的消息。

这样就可以实现实时将最新数据传给前端了。在应用程序中,当有新数据时,可以将数据发送给所有 WebSocketSession,前端通过 WebSocket API 接收到数据并更新页面。

Spring Boot 实时数据推送:使用 WebSocket 实现实时数据更新

原文地址: https://www.cveoy.top/t/topic/nH1G 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录