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();
        }
    }
}
相关推荐
铁皮饭盒5 分钟前
同样是算力巨头,为什么华为死磕英伟达,AMD 却 "躺平看戏"?
前端·后端
文心快码BaiduComate5 分钟前
用Comate 7天完成”鹅鸭杀”游戏网站开发
前端·后端·程序员
倚栏听风雨17 分钟前
Spring AI Alibaba 接入 OpenAI 兼容协议第三方大模型实战
后端
二哈赛车手23 分钟前
新人笔记---简易版AI实现以图搜图功能
java·人工智能·笔记·spring·ai
夕除25 分钟前
spring boot 6
java·spring boot·后端
zhangxingchao25 分钟前
AI应用开发二:Embedding与向量数据库
前端·人工智能·后端
倒流时光三十年39 分钟前
Java String.split() 方法陷阱:为什么你应该始终使用 split(regex, -1)
后端
johnrui1 小时前
JUC之AQS
java·开发语言·jvm
Full Stack Developme1 小时前
Spring 模块介绍
java·后端·spring
Mahir081 小时前
Redis 核心机制:数据过期策略与淘汰策略深度解析
数据库·redis·后端·缓存·面试