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();
        }
    }
}
相关推荐
happymaker06262 分钟前
SpringBoot学习日记——DAY02(SpringBoot整合Swagger3)
java·spring boot·学习
阿坤带你走近大数据13 分钟前
Java中的JVM、类加载记住、多线程、性能优化的概念
java·jvm·性能优化
鱼鳞_24 分钟前
苍穹外卖-Day04
java
未若君雅裁27 分钟前
Spring Boot 自动配置原理与常用注解
java·spring boot·后端
Xiacqi134 分钟前
Java数据库连接--JDBC--DRUID
数据库·后端
浮游本尊35 分钟前
用结构化 Prompt 让大模型「干活」:以数据库巡检告警建议生成为例
后端
snakeshe101039 分钟前
SpringBoot 多人协作平台实战(8):Cookie 与登录状态维持
后端
代码北人生1 小时前
后端工程师开始用 Claude Code 了,Stripe 4天完成了本来要10个工程师周的迁移
后端·claude
Klong.k1 小时前
如何避免Bean的线程安全问题
java·开发语言