JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习

先简单记录下简单使用跟测试,后续再补充具体,最近有用到,简单来说就是后端(服务端)编写个发射器,实现一次请求,一直向前端客户端发射数据,直到发射器执行完毕,模拟ai一句一句回复的效果

ResponseBodyEmitter

测试代码

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.util.Date;
import java.util.concurrent.CompletableFuture;/*** @Author: linjinde* @CreateTime: 2024-11-04*/
@RestController
@RequestMapping("/dify")
public class DifyController {@GetMapping("/emitter")public ResponseBodyEmitter handle() {//创建ResponseBodyEmitter发射器,-1代表不超时ResponseBodyEmitter emitter = new ResponseBodyEmitter(-1L);CompletableFuture.runAsync(() -> {try {for (int i = 0; i < 10000; i++) {System.out.println("bodyEmitter " + i);//发送数据emitter.send("bodyEmitter " + i + " @ " + new Date() + "\n");//模拟两秒响应一次Thread.sleep(2000);}emitter.complete();}catch (Exception e){// 发生异常时结束接口emitter.completeWithError(e);}});//postman或者网页无法直接现实响应体,因为发射器是设计面向客户端,要显示设计歌简单js客户端接收return emitter;}
}

请求测试

因为ResponseBodyEmitter是设计面向客户端持续发送数据,故postman跟网页正常情况下是不支持数据连续现实,需要javascript编写简单客户端才可以显示返回内容,对于后端来说很麻烦。

简单解决方法:这边就用cmd curl直接请求

 测试完毕

后续继续补充SseEmitter等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/3113.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

cdp(Chrome DevTools Protocol)检测分析

如需转载请注明出处.欢迎小伙伴一起讨论技术. 逆向网站:aHR0cHM6Ly93d3cuYnJvd3NlcnNjYW4ubmV0L2JvdC1kZXRlY3Rpb24 首先,打开devtools后访问网址,检测结果网页显示红色Robot,标签插入位置,确定断点位置可以hook该方法,也可以使用插件等方式找到这个位置,本篇不讨论. Robot标…

HUGE滤波器分析、matlab例程

文章目录 1. 动态噪声方差2. 更新卡尔曼增益时考虑实时噪声3. 更灵活的误差模型4. 实时调整和自适应能力代码示例中的体现总结 HUGE滤波器专注于处理异方差性&#xff0c;主要体现在以下几个方面&#xff1a; 1. 动态噪声方差 在传统的卡尔曼滤波中&#xff0c;观测噪声和过程…

[OS] Assignment3_Prerequisite_mmap()_1

专业解释 这张图片展示了 mmap() 函数的作用和其在内存映射中的应用。在操作系统中&#xff0c;mmap() 是一个系统调用&#xff0c;它的主要作用是将文件或设备的内容映射到进程的虚拟地址空间中&#xff0c;使得文件内容可以像内存一样直接访问。 mmap() 函数的核心功能&…

部署istio应用未能产生Envoy sidecar代理

1. 问题描述及原因分析 在部署Prometheus、Grafana、Zipkin、Kiali监控度量Istio的第2.2章节&#xff0c;部署nginx应用&#xff0c;创建的pod并没有产生Envoy sidecar代理&#xff0c;仅有一个应用容器运行中 故在随后的prometheus中也没有产生指标istio_requests_total。通…

HBuilderX自定义Vue3页面模版

HBuilderX自定义Vue3页面模版 首先在HBuilderX工具下的任意一个项目添加新建自定义页面模版 新建模版文件&#xff0c;并打开进行编辑 vue3-setup-js.vue文件里填写样式模版&#xff08;根据自己的需要进行修改&#xff09; <template><view class"">&…

PAT甲级-1084 Broken Keyboard

题目 题目大意 坏的键盘不能打出字符。给出2个字符串&#xff0c;一个字符串是期望打出的字符&#xff0c;另一个字符串是实际打出的字符。要求输出坏掉的字符&#xff0c;字母键用大写字母。字符范围是_以及大小写字母和数字。 思路 因为大小写字母是同一个键&#xff0c;所…

【天线&其他】大疆无人机热成像人员目标检测系统源码&数据集全套:改进yolo11-bifpn-SDI

改进yolo11-ASF等200全套创新点大全&#xff1a;大疆无人机热成像人员目标检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.11.03 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示”展示的系…

gitee推送代码remote rejected

其原因是码云邮箱设置怕暴露邮箱账号&#xff0c;所以禁止了代码推送 直接把这个选项关掉就行了

英特尔股价分析,财报超出预期,英特尔股票该买入还是卖出?

猛兽财经核心观点&#xff1a; &#xff08;1&#xff09;虽然英特尔第三季度的营收超出预期&#xff0c;但盈利却不及预期。 &#xff08;2&#xff09;华尔街分析虽然仍对英特尔持谨慎态度&#xff1b;但预计其2025年后有望取得重大进展。 &#xff08;3&#xff09;猛兽财经…

靠谱的零代码产平台开发— 应用创建与设置

在当今数字化快速发展的时代&#xff0c;企业对于快速构建和部署应用的需求日益增长。然而&#xff0c;传统的应用开发方式往往耗时耗力&#xff0c;且需要专业的编程技能。为了应对这一挑战&#xff0c;靠谱的零代码平台应运而生&#xff0c;它们通过直观的拖拽式界面和丰富的…

如何优雅处理异常?处理异常的原则

前言 在我们日常工作中&#xff0c;经常会遇到一些异常&#xff0c;比如&#xff1a;NullPointerException、NumberFormatException、ClassCastException等等。 那么问题来了&#xff0c;我们该如何处理异常&#xff0c;让代码变得更优雅呢&#xff1f; 1 不要忽略异常 不知…

Scrapy入门

Scrapy 是用 Python 实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。 安装scrapy pip install scrapy2.5.0 1.新建 Scrapy项目 scrapy startproject mySpider # 项目名为mySpider 2.进入到spiders目录 cd mySpider/mySpider/spiders 3.创建爬虫 scrapy gensp…

从0开始linux(20)——文件(1)文件描述符

欢迎来到博主的专栏&#xff1a;从0开始linux 博主ID&#xff1a;代码小豪 文章目录 文件打开文件文件修饰符从linux源码了解文件描述符 文件 首先我们先来搞清楚文件是什么&#xff1f;文件其实就是一段数据&#xff0c;是一段存储在磁盘当中的数据&#xff0c;文件是由文件内…

【汇编语言】[BX]和loop指令(二)——在Debug中跟踪用loop指令实现的循环程序

文章目录 前言1. 题目引入1.1 问题一1.2 问题二1.3 问题三1.4 代码实现 2. 程序跟踪2.1 加载程序&#xff0c;用r命令查看寄存器内容2.2 用U命令查看内存中的程序2.3 用T命令进行程序跟踪2.4 用P命令使得程序返回 3. 循环次数更多的程序3.1 代码实现3.2 一个新的命令——g3.3 如…

Unity照片墙效果

Unity照片墙效果&#xff0c;如下效果展示 。 工程源码

鸿蒙HarmonyOS开发生日选择弹框

鸿蒙HarmonyOS开发生日选择弹框 生日选择弹框和城市选择弹框差不多&#xff0c;都是通过观察上一个数据变化来设置自己的数据 一、思路&#xff1a; 一个弹框上建三个compoent&#xff0c;一个年&#xff0c;一个月&#xff0c;一个日。日的数据是根据年和月进行变化的 二、…

浏览器内核版本更新:Chrome 130✔

SunBrowser 内核版本更新至 Chrome 130&#xff0c;UA 同步更新至 130。 如何更新浏览器内核版本&#xff1f; 本地设置更新 在 AdsPower 客户端点击右上角的[设置]&#xff0c;再点击[本地设置]&#xff0c;下滑找到版本信息&#xff0c;选中需要的内核版本立即下载。 新建浏…

【实践】某央企研究院如何打造IT监控告警平台?

01客户简介&#xff1a; 案例客户为某央企下属研究院。 02痛点分析&#xff1a; 随着信创国产化持续推进&#xff0c;案例客户已完成部分IT核心系统的替代&#xff0c;部署了一系列国产软硬件设施&#xff0c;如Kylinv10操作系统、融智通网络设备等。由于信创生态不够成熟&a…

SpringBoot在线教育系统:集成第三方服务

5系统详细实现 5.1 普通管理员管理 管理员可以对普通管理员账号信息进行添加修改删除操作。具体界面的展示如图5.1所示。 图5.1 普通管理员管理界面 5.2 课程管理员管理 管理员可以对课程管理员进行添加修改删除操作。具体界面如图5.2所示。 图5.2 课程管理员管理界面 5.3 …

vscode | 开发神器vscode快捷键删除和恢复

目录 快捷键不好使了删除快捷键恢复删除的快捷键 在vscode使用的过程中&#xff0c;随着我们自身需求的不断变化&#xff0c;安装的插件将会持续增长&#xff0c;那么随之而来的就会带来一个问题&#xff1a;插件的快捷键重复。快捷键重复导致的问题就是快捷键不好使了&#xf…