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();
        }
    }
}
相关推荐
q***07145 小时前
Spring Boot 中使用 @Transactional 注解配置事务管理
数据库·spring boot·sql
wei_shuo5 小时前
openEuler 底座赋能:openGauss 数据库部署与性能实战评测
后端
用户4098170215105 小时前
Python 的基本类型
后端
AAA简单玩转程序设计5 小时前
Java进阶小妙招:ArrayList和LinkedList的"相爱相杀"
java
lkbhua莱克瓦245 小时前
集合进阶8——Stream流
java·开发语言·笔记·github·stream流·学习方法·集合
codetown5 小时前
openai-go通过SOCKS5代理调用外网大模型
人工智能·后端
星辞树5 小时前
MIT 6.824 Lab 3 通关实录:从 Raft 到高可用 KV 存储
后端
20岁30年经验的码农5 小时前
Java Elasticsearch 实战指南
java·开发语言·elasticsearch
okseekw5 小时前
Java 中的注释与关键字的初步学习
java
luv_sw5 小时前
JavaSE-面向对象-构造器
java