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();
        }
    }
}
相关推荐
montEvergreen5 小时前
RTMP 王国的“信笺百科全书”
后端·go
北冥you鱼5 小时前
Go 语言 Channel 机制详解:从原理到实战
开发语言·后端·golang
谢亮_vipxieliang5 小时前
Go 并发控制进阶:sync 包高级原语与 Context 生命周期管理
开发语言·后端·golang
弈栈录5 小时前
Spring Cloud 微服务架构:注册中心、配置中心与网关
java·spring cloud·架构
xuxigifxfh5 小时前
HJ5 进制转换
java·开发语言·华为机考
denlaku5 小时前
JDK 12 新特性详解
java·开发语言
用户9479135811625 小时前
ReAct 到底在循环什么:从零拆解 Agent 的「想一步、做一步」机制
后端
用户094248568035 小时前
第28章:JDK容器感知、cgroup与云原生JVM参数治理
java·jvm
鬼手点金5 小时前
opencode-全能开发者配置
java·linux·服务器·前端·javascript·学习·前向传播
Nebula_g5 小时前
JavaSE拓展:可变参数
java·开发语言·算法·安全·javase·可变参数