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();
        }
    }
}
相关推荐
花花鱼2 分钟前
Spring Framework 、Spring Boot 、 Spring Data 、Spring Cloud之间的关系简单说明
spring boot·spring·spring cloud
SamDeepThinking5 分钟前
千万级用户购物车系统的架构设计
java·后端·架构
liwulin05065 分钟前
【JAVAFX】从ORACLE JDK切换到国内的JDK以便使用JAVAFX功能
java·数据库·oracle
明月_清风9 分钟前
Makefile 完全指南:从入门到 CMake 工程化实践
后端·cmake
十年编程老舅10 分钟前
深度长文|Linux 图形与显示架构
linux·运维·后端·架构·内核·linux内核·通信机制
平凡但不平庸的码农12 分钟前
Go GMP 调度模型详解
开发语言·后端·golang
晓杰'13 分钟前
从0到1实现 Balatro 游戏后端(1):项目规划与牌型判断实现
后端·websocket·typescript·node.js·游戏开发·项目实战·nestjs
旺仔老馒头.18 分钟前
【C++】类和对象(二)
开发语言·c++·后端·类和对象
广师大-Wzx21 分钟前
JavaWeb:后端部分
java·开发语言·spring·servlet·tomcat·maven·mybatis
广东王多鱼22 分钟前
一个人 + Claude = 全栈开发团队:从零构建 AI 自动化开发系统的技术实现
后端·vibecoding