如何将进度传给前端呢

业务需求,导出某一数据,但是有时候可能很多,可以设计一个进度提醒功能-----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 + "}"));
        }
    }
}
相关推荐
二哈赛车手4 小时前
新人笔记---ApiFox的一些常见使用出错
java·笔记·spring
代码搬运媛4 小时前
Jest 测试框架详解与实现指南
前端
栗子~~4 小时前
JAVA - 二层缓存设计(本地缓冲+redis缓冲+广播所有本地缓冲失效) demo
java·redis·缓存
YDS8295 小时前
DeepSeek RAG&MCP + Agent智能体项目 —— RAG知识库的搭建和接口实现
java·ai·springboot·agent·rag·deepseek
counterxing5 小时前
我把 Codex 里的 Skills 做成了一个 MCP,还支持分享
前端·agent·ai编程
wangqiaowq5 小时前
windows下nginx的安装
linux·服务器·前端
之歆5 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
发现一只大呆瓜5 小时前
Vite凭什么这么快?3分钟带你彻底搞懂 Vite 热更新的幕后黑手
前端·面试·vite
Maimai108085 小时前
React如何用 @microsoft/fetch-event-source 落地 SSE:比原生 EventSource 更灵活的实时推送方案
前端·javascript·react.js·microsoft·前端框架·reactjs·webassembly
candyTong6 小时前
Claude Code 的 Edit 工具是怎么工作的
javascript·后端·架构