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();
        }
    }
}
相关推荐
Mr_pyx5 分钟前
RAG知识库从零到一:简单搭建教程(java版)
java·spring·ai·rag
敲代码的瓦龙8 分钟前
Android?碎片!!!
java·开发语言·android-studio
月落归舟11 分钟前
深入解析Spring依赖注入 DI 的三种方式
java·后端·spring
geovindu13 分钟前
go:Condition Variable Pattern
开发语言·后端·设计模式·golang·条件变量模式
亚马逊云开发者18 分钟前
Lambda 冷启动改善了,你的 Provisioned Concurrency 可能白花钱了
java
无风听海22 分钟前
UseForwardedHeaders 与 UsePathBase:深入理解 ASP.NET Core 代理感知中间件
后端·中间件·asp.net
C雨后彩虹23 分钟前
猴子爬山问题
java·数据结构·算法·华为·面试
天真吴邪xie25 分钟前
Claude Code安装
java·git
小新同学^O^31 分钟前
简单学习 --> Spring统一处理
java·学习·spring·统一功能处理
程序猿乐锅31 分钟前
【Tilas|第七篇】学员管理实现
java·笔记·idea·tlias