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 分钟前
【ASP.NET CORE】 10. 数据校验
笔记·后端·c#·asp.net·.netcore
填满你的记忆2 分钟前
JVM 内存模型详解:Java 程序到底是如何运行的?
java·开发语言·jvm
RDCJM4 分钟前
Plugin ‘org.springframework.bootspring-boot-maven-plugin‘ not found(已解决)
java·前端·maven
DJ斯特拉4 分钟前
SpringBoot项目的基本构建
java·spring boot·后端
小小心愿家6 分钟前
初识 maven,Spring boot,Spring MVC
java·后端·spring
Victor35610 分钟前
MongoDB(41)如何使用$group阶段?
后端
Victor35611 分钟前
MongoDB(40)如何使用$match阶段?
后端
身如柳絮随风扬11 分钟前
Spring IOC容器的工作原理
java·spring
不会写DN11 分钟前
Go中的泛型与any、interface有什么区别?
开发语言·后端·golang
yaoxin52112312 分钟前
350. Java IO API - Java 文件操作:java.io.File 与 java.nio.file 功能对比 - 2
java·python·nio