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();
        }
    }
}
相关推荐
码农水水16 小时前
京东Java面试被问:分布式会话的一致性和容灾方案
java·开发语言·数据库·分布式·mysql·面试·职场和发展
indexsunny16 小时前
互联网大厂Java求职面试实录:Spring Boot微服务在电商场景中的应用及技术深度解析
java·数据库·spring boot·缓存·微服务·面试·电商
夏幻灵16 小时前
Java中的this关键字解析与应用
java·开发语言·python
移幻漂流16 小时前
JNI的本质解析:Android Framework视角下的Java-Native衔接机制
android·java·开发语言
仙俊红16 小时前
Spring Cloud 核心组件部署方式速查表
后端·spring·spring cloud
猿小羽16 小时前
Spring AI + MCP 实战:构建下一代智能 Agent 应用
java·spring boot·llm·ai agent·spring ai·mcp·model context protocol
浪客川16 小时前
1972 GODOT 入门案例
android·java·godot
乂爻yiyao16 小时前
HotSpot 内存区域详解
java·jvm
独自破碎E16 小时前
【双指针】反转字符串
java·开发语言
时艰.16 小时前
JVM 垃圾收集器ParNew&CMS与三色标记算法
java·jvm·算法