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();
        }
    }
}
相关推荐
传说之后4 分钟前
分布式事务指南:从二阶段锁到两阶段提交,了解核心设计
后端
代码丰9 分钟前
Spring Boot 做 RAG 文档上传:1GB 文件会不会打爆内存?
后端
蝎子莱莱爱打怪13 分钟前
我花两年业余时间做了个IM系统,然后呢😂??
后端·flutter·面试
Dicky-_-zhang13 分钟前
分布式系统限流熔断实战:保护微服务稳定性
java·jvm
叫我少年18 分钟前
.NET 11 来了:Kestrel 提速 40%,还有这些你可能不知道的变化
后端
用户22795844828730 分钟前
医生问“现在还在吃吗”:EHR 用药 RAG 先看 effectivePeriod,别先信 note
后端
椰猫子1 小时前
SpringBoot(简介、基础配置、整合第三方技术)
java·spring boot·spring
努力成为AK大王1 小时前
Java并发线程核心知识(一)
java·开发语言·面试
组合缺一1 小时前
Solon Flow 实战:用 50 行 YAML 实现一个请假审批流(含中断恢复、并行网关、条件分支)
java·solon·工作流·审批流·solon-flow·流程编排
iiiiyu1 小时前
面向对象和集合编程题
java·开发语言·前端·数据结构·算法·编程语言