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

想自己做网站流程百度分析

想自己做网站流程,百度分析,网站地图灰色效果的怎么做的,注册一个网站的流程SSE SSE(Server-Sent Events,服务器发送事件)是一种基于HTTP协议的通信技术,它允许服务器持续地将数据推送给客户端,而无需客户端发起请求。这种通信方式通常用于实时性要求较高的场景,如实时更新、通知、或…

SSE

SSE(Server-Sent Events,服务器发送事件)是一种基于HTTP协议的通信技术,它允许服务器持续地将数据推送给客户端,而无需客户端发起请求。这种通信方式通常用于实时性要求较高的场景,如实时更新、通知、或者数据流式传输。
SSE与传统的Ajax轮询或长轮询相比,具有更低的延迟、更高的效率,并且更易于实现。它建立在HTTP协议之上,利用HTTP/1.1的持久连接,允许服务器在连接建立后持续地向客户端发送数据,客户端通过监听一个HTTP连接来接收这些数据。
在Web开发中,服务器通常会使用特殊的HTTP响应头(如"Content-Type: text/event-stream")来指示客户端这是一个SSE流,并且按照一定的格式发送事件数据给客户端。客户端则可以使用JavaScript中的EventSource对象来接收并处理这些事件,从而实现实时的数据更新。

SseEmitter

SseEmitter是Spring框架中的一个类,专门用于Java。SSE代表服务器发送事件,是一种使服务器能够通过HTTP向Web客户端推送数据更新的技术。SseEmitter是在Spring应用程序中实现SSE服务器支持的便捷方式。
使用SseEmitter,您可以在Spring应用程序中创建一个端点,客户端可以连接到该端点,服务器可以通过此连接向客户端推送事件。这对于实时更新非常有用,例如显示实时通知、进度更新或流式传输数据。

实现:

  • OpenAI支持Stream流格式接收

在这里插入图片描述

接口连续的数据读取

官网示例

在这里插入图片描述

{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0125", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"role":"assistant","content":""},"logprobs":null,"finish_reason":null}]}{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0125", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"content":"Hello"},"logprobs":null,"finish_reason":null}]}
...
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0125", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}]}
demo
  private static final String API_KEY = "********************";private static final Pattern contentPattern = Pattern.compile("\"content\":\"(.*?)\"}");private static final String MODEL_ENGINE = "gpt-3.5-turbo";public static void test() throws InterruptedException, IOException {//params 的入参封装 这里省略 参考上面图片 或去官网 需要stream形式请求HttpRequest httpRequest = HttpRequest.post("https://api.openai.com/v1/chat/completions").header("Content-Type", "application/json").header("Authorization", "Bearer " + API_KEY).body(JSONUtil.toJsonStr(params));//TODO 代理 到shadowsocks httpRequest.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 7890)));HttpResponse execute = httpRequest.execute();InputStream inputStream = execute.bodyStream();BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));String line;while ((line = bufferedReader.readLine()) != null) {if (StringUtils.hasLength(line)) {System.out.println(line);Matcher matcher = contentPattern.matcher(line);if (matcher.find()) {String content = matcher.group(1);System.out.println(content);}}}
}

SSE发送

demo

ChatController

 @Autowiredprivate ChatService chatService;@GetMapping("/test")public SseEmitter test(String question) {SseEmitter sseEmitter = new SseEmitter();chatService.question(question, sseEmitter);return sseEmitter;}

ChatService

  private static final String API_KEY = "********************";private static final Pattern contentPattern = Pattern.compile("\"content\":\"(.*?)\"}");@Asyncpublic void question(String question, SseEmitter sseEmitter) {try {// 构建请求参数String params = "{\"model\":\"gpt-3.5-turbo\",\"messages\":[{\"role\":\"user\",\"content\":\"" + question + "\"}],\"stream\":true}";// 发起 HTTP 请求HttpRequest httpRequest = HttpRequest.post("https://api.openai.com/v1/chat/completions").header("Content-Type", "application/json").header("Authorization", "Bearer " + API_KEY).body(JSONUtil.toJsonStr(params)).setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 7890)));// 执行 HTTP 请求HttpResponse execute = httpRequest.execute();// 处理响应流try (InputStream inputStream = execute.bodyStream();BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))) {String line;while ((line = bufferedReader.readLine()) != null) {if (StringUtils.hasLength(line)) {// 输出响应内容System.out.println(line);// 提取内容Matcher matcher = contentPattern.matcher(line);if (matcher.find()) {String content = matcher.group(1);System.out.println(content);// 发送 SSE 事件 (模拟延迟)Thread.sleep(1000);sseEmitter.send(SseEmitter.event().name("answer").data("{" + content + "}"));}}}}} catch (IOException | InterruptedException e) {// 异常处理throw new RuntimeException(e);} finally {// 完成 SSE 连接sseEmitter.complete();}}

测试

在这里插入图片描述

http://www.rdtb.cn/news/18991.html

相关文章:

  • 简易博客网站模板下载如何做好seo优化
  • 如何将vs做的网站备份出来谷歌浏览器下载app
  • 企业网站需要哪些功能华为手机业务最新消息
  • 网站建设专业性的评价内容商家联盟营销方案
  • 石家庄展为网络科技有限公司广东网站se0优化公司
  • 模板建站代理百度站长工具怎么关闭
  • 深圳最大的广告公司庆云网站seo
  • 视频网站后台功能2021谷歌搜索入口
  • 大连b2c网站建设seo关键词推广公司
  • 做网站大概要山东免费网络推广工具
  • 网站备案花钱么什么软件可以弄排名
  • 常见的电子商务网站网址郑州网站推广方案
  • wordpress删除缓存会删掉文件吗seo查询优化
  • 亚马逊卖家可以做促销的网站php搭建一个简单的网站
  • 做网站合肥哪家公司好中央新闻直播今天
  • 给老外做代购网站seo外包公司兴田德润官方地址
  • 昭平县建设局网站seo黑帽是什么
  • 免备案手机网站百度竞价推广点击器
  • 南阳做网站seo的网站维护中
  • 汽修网站建设免费搜索引擎优化学习
  • 单位怎样做网站微博推广方式有哪些
  • 一些做系统的网站搜索引擎优化工作
  • 做购物网站的外挂需要自己搭建服务器吗最新app推广
  • 甘肃网站建设制作商上海网站营销seo方案
  • 国外黄色网站推荐seo站群优化技术
  • 做网站的开发软件郑州网站推广报价
  • 网站关键字及说明优化疫情防控 这些措施你应该知道
  • 做网站的 需要续费维护费吗武威网站seo
  • 婚恋交友网站建设方案关键词智能优化排名
  • 网站做的题不小心关闭了新闻发稿平台