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 分钟前
47-MetaGrid元数据表格
java·低代码·架构
wang_shu_mo_ran4 分钟前
Spring MVC的常用注解和用法(一)
java·spring·mvc
程序员cxuan10 分钟前
从 0 到 1 速通 WorkBuddy
人工智能·后端·程序员
晴空蓝天11 分钟前
Spring Boot 3.5 脚手架里的 JWT + Redis 双轨会话,双端 token 隔离我是这么设计的
java·spring boot·redis
薛定谔的算法13 分钟前
M01:环境搭建与第一个 Java 程序
后端
IT枫斗者枫哥14 分钟前
MyBatis 列表查询优化:一页20条数据,21次SQL改成2次
java
凤山老林16 分钟前
RocketMQ 5.0 实战避坑与调优:事务、延迟、轨迹及高可用落地指南
spring boot·rocketmq
君顾116 分钟前
本地电竞服务交易系统架构设计与实战:从同城服务撮合到订单履约
java·开发语言·电竞
TanYYF18 分钟前
Spring Boot 2 与 Spring Boot 3 自动装配的区别及 Boot 3 装配流程详解
spring boot
小刘在重生~19 分钟前
十六(3)、《集合扩充》CopyOnWriteArrayList 超详细解析(线程安全集合)
java·笔记·面试·职场和发展