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();
        }
    }
}
相关推荐
码出极致3 分钟前
Java中的AQS概念、原理和使用
后端
满分观察网友z9 分钟前
告别CRUD Boy!SQL子查询:从头疼到真香的进化之路
数据库·后端
天天摸鱼的java工程师9 分钟前
volatile关键字实战指南:八年Java开发者详解五大应用场景
java·后端
满分观察网友z17 分钟前
告别满屏if-else!我如何用注解和AutoCloseable徒手撸一个校验框架?
后端
刃神太酷啦20 分钟前
C++ 多态详解:从概念到实现原理----《Hello C++ Wrold!》(14)--(C/C++)
java·c语言·c++·qt·算法·leetcode·面试
wjm0410061 小时前
C++后端面试八股文
java·c++·面试
都叫我大帅哥1 小时前
📉 MySQL索引罢工事件簿:揭秘失效原因与优化起义方案
java·mysql
Seven971 小时前
剑指offer-11、⼆进制中1的个数
java
you秀1 小时前
K8S中的dns要如何指定??给pod中增加hosts映射,来规避dns冲突问题
java·容器·kubernetes