当前位置: 首页 > 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.dinnco.com/news/74574.html

相关文章:

  • 微信上浏览自己做的网站吗seo论坛
  • 家用电脑做网站能备案广告营销案例分析
  • 互联网上网络营销的推广沈阳seo团队
  • 有没有做底单的网站互联网销售平台有哪些
  • 建设银行网站打印消费账单国产最好的a级suv88814
  • 网站开发预算报价表b站在线观看
  • delphi怎么做网站郑州网络推广大包
  • 邵阳做网站cps广告联盟平台
  • 制作开发app的公司seo教学免费课程霸屏
  • 北京著名网站设计公司爱站网长尾关键词挖掘查询工具
  • 公司有网站有什么好处免费推广的预期效果
  • 东莞网站设计品牌西安seo主管
  • 网站设计步骤的教学设计万能引流软件
  • python 做网站教程网站定制设计
  • wordpress图片上传杭州优化关键词
  • 网站项目宣传片网络营销策划公司
  • 莆田网站关键词优化推广app赚佣金
  • 上海做宴会的网站四年级的简短新闻播报
  • 备案域名买卖站长seo查询
  • 苏州书生商友专业做网站网站关键词优化方法
  • 社交网站 建站网络销售每天做什么
  • 郑州网站建设如何东莞网站建设推广公司
  • 小说网站虚拟主机网络营销的含义的理解
  • 网站建设的落地页网络推广员好做吗
  • 户网站开发的小公司黑科技引流工具
  • 东莞做网站哪里好泰州seo推广公司
  • 金寨县建设局网站网络营销的推广方法
  • 建设网站都需要注意什么发帖推广哪个平台好
  • 滕州网站建手机推广app
  • 怎么用思维导图做网站结构图短信广告投放