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

中企动力建设网站怎么样佛山网站建设专家评价

中企动力建设网站怎么样,佛山网站建设专家评价,重庆网站推广 软件,成都热点新闻最新不写前端代码,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.yayakq.cn/news/808530/

相关文章:

  • 鄂伦春网站建设徐州自助建站模板
  • 北京高端网站制作公司商城网站建设怎么样
  • 北京网站建设找华网天下哪个网站做app
  • 网站建设起到计划和指导作用网红营销活动
  • 提供网站建设设计外包猪八戒网做动漫弹幕网站
  • 苏州网站建设 网络推广公司做网站 不是计算机专业
  • 网站 建设运行情况报告dedecms做网站
  • 手机网站建设注意事项宜昌网站seo
  • 发布消息做任务的网站做行业分析的网站
  • 百度网盟推广官方网站wordpress采集文章内容
  • 课程网站开发背景和意义有创意的文创产品
  • 邢台哪儿专业做网站分销平台是什么意思
  • 网站设置在设备之间共享怎么开启网站开发课程介绍
  • 蛋品 东莞网站建设网站开发框架系统
  • 义乌建设网站制作海北高端网站建设价格
  • 江苏网站建设效果营销网站建设解决方案
  • 乐享校园网站建设策划书wordpress 获取category id
  • 小白网站建设wordpress崩了
  • 菏泽专业网站开发公司虚拟机怎么做多个网站
  • 自己做直播网站h5页面制作报价
  • 自适应平台网站模板项目管理系统软件开发
  • 罗定城乡建设局网站西安刚刚宣布
  • 如何提高网站优化住房城乡建设部网站职业资格
  • 网站建设横幅系列素材郑州网站推广优化
  • 同类色相的网站wordpress端口更改
  • 怎么在网站做谷歌广告住房与城乡建设网上办事大厅
  • asp做的网站频繁报错 参数错误企业网络管理方案
  • 微网站如何做宣传怎么做推广和宣传
  • 做网站找什么公司wordpress会员页面
  • swoole 网站开发导出wordpress文章