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();
        }
    }
}
相关推荐
她的男孩33 分钟前
Spring Boot 接 Flowable 工作流:用 3 个注解搭一个请假审批流程
java·后端·架构
爱读源码的大都督39 分钟前
Claude Code源码分析(三):为什么系统提示词中需要有tools呢?
前端·人工智能·后端
爱勇宝44 分钟前
Claude Code 被曝暗藏“隐形检测”代码:封代理不是最可怕的,可怕的是你根本不知道它在干什么
前端·后端·程序员
ITOM运维行者1 小时前
从零搭建企业级服务器监控体系:踩坑实录与架构设计
前端·后端
用户4099322502121 小时前
Vue状态管理入门第四章:组合式store和SSR风险
前端·vue.js·后端
用户34232323763171 小时前
SPI 通信与高速外设驱动详解
后端
魏祖潇2 小时前
SDD 完整指南——Spec 端打底、Story 端交付、留白区
人工智能·后端
feelmylife592 小时前
消息队列可靠投递与幂等消费 -- 从"消息丢了"到"消息别重复"的完整工程实践
后端
雪隐2 小时前
个人电脑玩AI-10让5060 Ti给你打工——部署 Odysseus:终于有个能打的"AI管家"了
人工智能·后端
荣码2 小时前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python