如何将进度传给前端呢

业务需求,导出某一数据,但是有时候可能很多,可以设计一个进度提醒功能-----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 + "}"));
        }
    }
}
相关推荐
想用offer打牌6 分钟前
MCP (Model Context Protocol) 技术理解 - 第一篇
后端·aigc·mcp
code_YuJun10 分钟前
corepack 作用
前端
千寻girling11 分钟前
Koa.js 教程 | 一份不可多得的 Node.js 的 Web 框架 Koa.js 教程
前端·后端·面试
全栈前端老曹12 分钟前
【MongoDB】Node.js 集成 —— Mongoose ORM、Schema 设计、Model 操作
前端·javascript·数据库·mongodb·node.js·nosql·全栈
code_YuJun13 分钟前
pnpm-workspace.yaml
前端
天才熊猫君15 分钟前
“破案”笔记:iframe动态加载内容后,打印功能为何失灵?
前端
程序员清风19 分钟前
北京回长沙了,简单谈谈感受!
java·后端·面试
何中应28 分钟前
请求头设置没有生效
java·后端
NPE~31 分钟前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化
五月君_32 分钟前
炸裂!Claude Opus 4.6 与 GPT-5.3 同日发布:前端人的“自动驾驶“时刻到了?
前端·gpt