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();
        }
    }
}
相关推荐
Huangxy__2 分钟前
接口的的的~
java
廋到被风吹走11 分钟前
【MySql】超时问题分析
java·数据库·mysql
云创智城-yuncitys12 分钟前
[特殊字符]⚡ 停充一体化云平台:基于微服务架构的城市智慧停车+新能源充电解决方案
java·微服务·架构
y = xⁿ13 分钟前
重生之我创作出了小红书:对象存储模块,用户资料模块
后端·mysql·intellij-idea
毕设源码-朱学姐18 分钟前
【开题答辩全过程】以 高效便捷的民航订票系统为例,包含答辩的问题和答案
java
404避难所22 分钟前
windows安装WSL2
后端
轩情吖22 分钟前
MySQL之用户管理
数据库·c++·后端·mysql·权限管理·用户管理
零雲27 分钟前
java面试:Spring事务失效的场景有哪些?
java·数据库·面试
二月十六28 分钟前
运行 ‘XXXX‘ 时出错 运行 XXXX时出错。命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行。
java·jar
添尹1 小时前
Go语言基础之基本数据类型
开发语言·后端·golang