如何将进度传给前端呢

业务需求,导出某一数据,但是有时候可能很多,可以设计一个进度提醒功能-----WebSocket推送导出进度。

(1) 添加依赖
复制代码
<!-- pom.xml -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
(2) WebSocket配置类
java 复制代码
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(exportProgressHandler(), "/export/progress")
                .setAllowedOrigins("*");
    }

    @Bean
    public WebSocketHandler exportProgressHandler() {
        return new ExportProgressHandler();
    }
}
(3) WebSocket处理器(核心逻辑)
java 复制代码
public class ExportProgressHandler extends TextWebSocketHandler {

    // 保存所有活跃连接(Key: ws_id, Value: Session)
    private static final ConcurrentHashMap<String, WebSocketSession> sessions = new ConcurrentHashMap<>();

    @Override
    public void afterConnectionEstablished(WebSocketSession session) {
        String wsId = session.getHandshakeHeaders().getFirst("ws_id");
        sessions.put(wsId, session); // 建立连接时注册
    }

    // 推送进度给前端
    public static void sendProgress(String wsId, int progress) {
        WebSocketSession session = sessions.get(wsId);
        if (session != null && session.isOpen()) {
            session.sendMessage(new TextMessage("{\"progress\": " + progress + "}"));
        }
    }
}
相关推荐
Larcher1 分钟前
新手也能学会,100行代码玩AI LOGO
前端·llm·html
SheepHappy2 分钟前
MyBatis-Plus 源码阅读(二)代码生成器原理深度剖析
java·源码阅读
雨白11 分钟前
重识 Java IO、NIO 与 OkIO
android·java
light_in_hand12 分钟前
内存区域划分——垃圾回收
java·jvm·算法
金銀銅鐵13 分钟前
[Java] JDK 9 新变化之 Convenience Factory Methods for Collections
java·后端
徐子颐13 分钟前
从 Vibe Coding 到 Agent Coding:Cursor 2.0 开启下一代 AI 开发范式
前端
小月鸭26 分钟前
如何理解HTML语义化
前端·html
微小冷26 分钟前
Rust图形界面教程:egui基础组件的使用
后端·rust·gui·egui·button·panel·用户图形界面
jump6801 小时前
url输入到网页展示会发生什么?
前端
javadaydayup1 小时前
同样是简化代码,Lambda 和匿名内部类的核心原理是什么?
后端