springboot中EventSourceListener的onEvent方法中, 获取HttpServletResponse对象

在Spring Boot中,可以通过注入HttpServletResponse对象来获取。具体步骤如下:

  1. 在EventSourceListener类中定义一个HttpServletResponse类型的成员变量response,并添加一个构造函数,将response作为参数传入。

  2. 在onEvent方法中,通过response.getWriter()方法获取PrintWriter对象,然后使用该对象向客户端发送数据

以下是示例代码:

复制代码
@Component
public class MyEventSourceListener implements EventSourceListener {

    private HttpServletResponse response;

    public MyEventSourceListener(HttpServletResponse response) {
        this.response = response;
    }

    @Override
    public void onOpen() throws IOException {
        // 设置响应头
        response.setContentType("text/event-stream");
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Cache-Control", "no-cache");
        response.setHeader("Connection", "keep-alive");
    }

    @Override
    public void onEvent(String event, String id, String data) throws IOException {
        PrintWriter writer = response.getWriter();
        writer.write("event: " + event + "\n");
        writer.write("id: " + id + "\n");
        writer.write("data: " + data + "\n\n");
        writer.flush();
    }

    @Override
    public void onError(Throwable t) {
        t.printStackTrace();
    }

    @Override
    public void onComplete() {
        try {
            response.getWriter().close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
相关推荐
WL_Aurora4 分钟前
Java集合框架核心组件
java
我是一颗柠檬5 分钟前
【JDK8新特性】Stream流API上Day4
java·开发语言·后端
超梦dasgg5 分钟前
拆分大对象 + 流式处理 + 不一次性加载全量数据
java·jvm·windows
我是一颗柠檬11 分钟前
【JDK8新特性】方法引用与构造器引用Day3
java·开发语言·后端·intellij-idea
在繁华处11 分钟前
从零搭建轻灵(五):记忆系统与生产化特性
java·jvm·oracle
身如柳絮随风扬14 分钟前
Docker 化部署 Spring Boot + Vue 全栈应用:从打包到容器化上线
vue.js·spring boot·docker
天若有情67316 分钟前
Deepseek-V4-Flash-20260423 深度评测与实战指南
java·大数据·网络·ai
折哥的程序人生 · 物流技术专研21 分钟前
《Java 100 天进阶之路》第32篇:Java常用工具类(Objects、Collections、Arrays深入)
java·后端·面试·求职招聘
憧憬成为java架构高手的小白22 分钟前
苍穹外卖项目-day02
java·spring
一只大袋鼠26 分钟前
SpringBoot 入门学习笔记(三)Web 开发下篇
spring boot·笔记·学习