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();
        }
    }
}
相关推荐
ShaneD7713 分钟前
解决idea错误提示:无法解析'表名'
后端
Li_7695325 分钟前
Spring Cloud —— SkyWalking(四)
java·spring cloud·skywalking
while(1){yan}8 分钟前
多线程CAS八股文
java·开发语言·面试
zfj3219 分钟前
Docker和容器OCI规范的关系
java·docker·eureka
李拾叁的摸鱼日常13 分钟前
从 Java 8 升级视角看Java 17 新特性详解
java·后端
淡定__00913 分钟前
深入理解 .NET 中的依赖注入(DI):从原理到实战
后端
张人大 Renda Zhang20 分钟前
2025 年版笔记:Java 开发如何用 AI 升级 CI/CD 和运维?
java·运维·ci/cd·ai·云原生·架构·自动化
Ankkaya23 分钟前
小白服务器踩坑(2)- 自动化部署
后端
回家路上绕了弯23 分钟前
Vavr 工具实用指南:Java 函数式编程的高效落地方案
分布式·后端
开心就好202526 分钟前
没有 Mac 怎么上架 iOS 应用 跨平台团队的可行交付方案分析
后端