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 分钟前
SpringBoot Profile多环境配置详解,一套配置应对所有场景
java·数据库·spring boot
MetaverseMan4 分钟前
rpc节点: synchronized (this) + 双检锁,在 race condition 的情况下分析
java·区块链
笃行客从不躺平5 分钟前
Seata + AT 模式 复习记录
java·分布式
CTO Plus技术服务中8 分钟前
强悍的Go语言开发面试题和答案
java·面试·职场和发展
无心水8 分钟前
2、Go语言源码文件组织与命令源码文件实战指南
开发语言·人工智能·后端·机器学习·golang·go·gopath
黎雁·泠崖17 分钟前
Java static入门:概述+静态变量特点与基础实战
java·开发语言
努力也学不会java19 分钟前
【Spring Cloud】 服务注册/服务发现
人工智能·后端·算法·spring·spring cloud·容器·服务发现
一条大祥脚22 分钟前
26.1.21 根号分治 相向双指针
java·开发语言·redis
迦蓝叶30 分钟前
JDBC元数据深度实战:企业级数据资源目录系统构建指南
java·jdbc·企业级·数据资源·数据血缘·数据元管理·构建指南