如何将进度传给前端呢

业务需求,导出某一数据,但是有时候可能很多,可以设计一个进度提醒功能-----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 + "}"));
        }
    }
}
相关推荐
wuk9982 分钟前
互联网应用主流框架整合 Spring Boot开发
java·spring boot·后端
float_六七18 分钟前
JavaScript:现代Web开发的核心动力
开发语言·前端·javascript
zhaoyang030129 分钟前
vue3笔记(2)自用
前端·javascript·笔记
forestsea36 分钟前
Caffeine 缓存库的常用功能使用介绍
java·缓存·caffeine
德育处主任Pro1 小时前
# JsSIP 从入门到实战:构建你的第一个 Web 电话
前端
拾光拾趣录1 小时前
setTimeout(1) 和 setTimeout(2) 的区别
前端·v8
程序员NEO1 小时前
10分钟上线一个Web应用?我没开玩笑,用这个AI智能体就行
人工智能·后端
拾光拾趣录1 小时前
内存泄漏的“隐形杀手”
前端·性能优化
辉辉健身中1 小时前
HttpServletRequest知识点
java
倔强青铜三1 小时前
Python的Lambda,是神来之笔?还是语法毒瘤?
人工智能·后端·python