当前位置: 首页 > news >正文

聊城网站建设代理商中国搜索引擎排名2021

聊城网站建设代理商,中国搜索引擎排名2021,重庆做营销型网站建设公司,做网站的公司北京有哪些不写前端代码,curl直接开两个终端调试sse 过程: 客户端向服务端发送建立连接请求; 服务端向客户端推送内容; 服务端向客户端发送结束信号并结束 注意事项: 只有连接时要求content-type是xxx 其他问题: …

不写前端代码,curl直接开两个终端调试sse

过程:

客户端向服务端发送建立连接请求;
服务端向客户端推送内容;
服务端向客户端发送结束信号并结束

注意事项:

只有连接时要求content-type是xxx

其他问题:

服务端打算断开时,是否需要先得到客户端应答再断开?

java代码参考:

controller层


@RestController
public class ChatController {@Autowiredprivate ChatService chatService;// TODO: 2023/10/16 执行顺序@CrossOrigin@PostMapping(value = "/ask")@SneakyThrowspublic void chatGPT(@RequestBody ChatRequest request) {chatService.chat(request);// TODO: 2023/10/16 执行顺序 2}@CrossOrigin@GetMapping(value = "/link", produces = "text/event-stream;charset=utf-8")@SneakyThrowspublic SseEmitter link() {return chatService.link();// TODO: 2023/10/16 执行顺序 1}@CrossOrigin@PostMapping(value = "/stop")@SneakyThrowspublic void chatGPT() {chatService.stop();// TODO: 2023/10/16 执行顺序 3}
}
请求体

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ChatRequest {private String question;
}
接口

public interface ChatService {void chat(ChatRequest request);SseEmitter link();void stop();}
实现类
@Slf4j
@Service
public class ChatServiceImpl implements ChatService {static HashMap<String, SseEmitter> map = new HashMap<>();@SneakyThrows@Overridepublic void chat(ChatRequest request) {SseEmitter sseEmitter = map.get("222");String question = request.getQuestion();char[] chars = question.toCharArray();for (int i = 0; i < chars.length; i++) {sseEmitter.send(SseEmitter.event().id("111").data(chars[i]));}}@SneakyThrows@Overridepublic SseEmitter link() {SseEmitter sseEmitter = new SseEmitter(0L);//设置超时时间,单位为毫秒map.put("222", sseEmitter);//  >> 回调1:长链接完成后回调接口(即关闭连接时调用)sseEmitter.onCompletion(() -> {map.remove("222");log.info("连接关闭, userId = {},  sessionId = {}, 时间戳 = {}", null, null, System.currentTimeMillis());// TODO: 2023/10/16 执行顺序 4});//  >> 回调2:出现异常会调用此方法sseEmitter.onError(new Consumer<Throwable>() {@Overridepublic void accept(Throwable throwable) {log.info("连接出错, userId = {},  sessionId = {}, 时间戳 = {}", null, null, System.currentTimeMillis());sseEmitter.completeWithError(new RuntimeException("SSE 超时了"));}});//  >> 回调3:出现连接超时,会调用此方法sseEmitter.onTimeout(() -> {log.info("连接超时, userId = {},  sessionId = {}, 时间戳 = {}", null, null , System.currentTimeMillis());sseEmitter.completeWithError(new RuntimeException("SSE 超时了"));});sseEmitter.send(SseEmitter.event().data("操作成功"));return sseEmitter;}@SneakyThrows@Overridepublic void stop() {SseEmitter sseEmitter = map.get("222");sseEmitter.send(SseEmitter.event().id("111").data("中断"));sseEmitter.complete();}
}

终端开两个窗口通过curl验证效果

  • 请求连接的curl
curl -H "Accept: text/event-stream" http://localhost:9033/link

得到应答:
在这里插入图片描述

  • 提问的curl(这个演示的是将输入的文字推送出来):
curl -X POST -H "Content-Type: application/json" -d "{\"question\": \"hhhhh\"}" http://localhost:9033/ask

提问后得到的响应:
在这里插入图片描述

  • mock服务主动断开的curl:
curl -X POST http://localhost:9033/stop

客户端收到的:
在这里插入图片描述

http://www.mnyf.cn/news/53867.html

相关文章:

  • 中国人民银行网站官网域名备案查询官网
  • 邯郸做移动网站多少钱seo基础教程使用
  • 做网站建设的企业还有那些青岛seo计费
  • 怎样给网站做一张背景seo搜索引擎优化费用
  • 专业网站的定义网络推广平台网站推广
  • 盐城做网站网络公司电话?seo网络推广公司排名
  • 毕业设计做网站拉新任务接单放单平台
  • 开发一个网站需要多少钱深圳网络公司推广平台
  • 制作网站价格灯塔seo
  • 上海十大企业seo技术培训唐山
  • 视频变成网站怎么做百度站长收录入口
  • 东莞企业网站建设开发公司淘宝产品关键词排名查询
  • 个人房产信息查询网站山西seo和网络推广
  • 宁波建设网站的公司文登seo排名
  • 暗网网站微营销平台
  • 吉安网站建设0796abc如何自制网站
  • 龙山建设集团有限公司网站百度助手下载安装
  • 重庆做网站哪家公司好湖北网站seo设计
  • 建网站开发国外客户seo基础入门教程
  • 东营做网站seo的营销型网站建设费用
  • 微信公众网站怎么做的百度关键词收录排名
  • 建筑公司的愿景怎么写搜索引擎优化论文3000字
  • 沈阳做公司网站的公司澳门seo关键词排名
  • 打开网站显示建设中seo是搜索引擎吗
  • 说服企业做网站手机seo快速排名
  • 做胎儿羊水鉴定网站综合查询
  • 普通电脑可以做网站服务器吗2345网址导航怎么下载
  • 小男孩做愛网站手机网站排名优化
  • 什么是网站分析今日nba数据帝
  • 外国旅游网站建设现状营销型网站设计