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();
        }
    }
}
相关推荐
TE-茶叶蛋8 分钟前
Java 8 引入的Stream API-stream()
java·windows·python
Stream_Silver10 分钟前
【 libusb4java实战:跨平台USB设备通信完全指南】
java·笔记·嵌入式硬件·microsoft
极光代码工作室11 分钟前
基于SpringBoot的宿舍管理系统
java·springboot·web开发·后端开发
Ting-yu15 分钟前
SpringCloud快速入门(8)---- OpenFeign(远程调用)
java·spring·spring cloud
两年半的个人练习生^_^18 分钟前
什么是内存泄漏?什么是内存溢出?
java·开发语言
曦夜日长21 分钟前
C++ STL容器string(二):删除与插入、数据查找、自定义输入
java·开发语言·c++
赏金术士23 分钟前
Kotlin 协程底层原理(Continuation)详解
java·开发语言·kotlin
手揽回忆怎么睡24 分钟前
springboot3使用ProGuard混淆jar
java·jar
五阿哥永琪33 分钟前
从0开始做一个导出功能,完整流程
spring boot
dadaobusi40 分钟前
PCIe的ATS和PRS
java·网络·数据库