如何将进度传给前端呢

业务需求,导出某一数据,但是有时候可能很多,可以设计一个进度提醒功能-----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 + "}"));
        }
    }
}
相关推荐
qq_5470261792 分钟前
Maven 使用指南
java·maven
@大迁世界9 分钟前
TypeScript 的本质并非类型,而是信任
开发语言·前端·javascript·typescript·ecmascript
xiaolyuh12310 分钟前
Arthas修改类(如加日志)的实现原理
java
栗子叶14 分钟前
Java对象创建的过程
java·开发语言·jvm
GIS之路18 分钟前
GDAL 实现矢量裁剪
前端·python·信息可视化
勇哥java实战分享19 分钟前
短信平台 Pro 版本 ,比开源版本更强大
后端
是一个Bug21 分钟前
后端开发者视角的前端开发面试题清单(50道)
前端
Amumu1213823 分钟前
React面向组件编程
开发语言·前端·javascript
学历真的很重要24 分钟前
LangChain V1.0 Context Engineering(上下文工程)详细指南
人工智能·后端·学习·语言模型·面试·职场和发展·langchain
有一个好名字24 分钟前
力扣-从字符串中移除星号
java·算法·leetcode