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();
        }
    }
}
相关推荐
铁皮饭盒1 小时前
26年bunjs, elysia+pg一把梭, redis都省了
前端·javascript·后端
plainGeekDev1 小时前
ButterKnife → ViewBinding
android·java·kotlin
葫芦和十三9 小时前
图解 MongoDB 19|Oplog:复制的真正载体,不是文档是操作
后端·mongodb·agent
葫芦和十三9 小时前
图解 MongoDB 20|复制延迟与 catch up:Secondary 为什么跟不上
后端·mongodb·agent
IT_陈寒14 小时前
SpringBoot自动配置的坑,我的API突然就404了
前端·人工智能·后端
ServBay15 小时前
为什么说 MCP 是 2026 年开发者必须掌握的黄金协议?
后端·mcp
程序员夏洛15 小时前
Spring Boot 多模块项目中 IDEA 提示 Cannot resolve symbol 的一次排查记录
后端
子兮曰15 小时前
OpenMontage 深度解剖:你的 AI 编程助手,其实是个视频工作室
前端·后端·ai编程
子兮曰15 小时前
前端工具链的「Rust 化」:一场没有赢家的军备竞赛?
前端·后端·rust