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

网易163企业邮箱注册广州seo推广公司

网易163企业邮箱注册,广州seo推广公司,2345系统导航,海南网站备案我在探索ChatGPT的使用过程中#xff0c;发现了一个有趣的现象#xff1a;ChatGPT在实现流式返回的时候#xff0c;选择了SSE#xff08;Server-Sent Events#xff09;#xff0c;而非WebSocket。 那么问题来了#xff1a;为什么ChatGPT选择了SSE#xff0c;而不是We…我在探索ChatGPT的使用过程中发现了一个有趣的现象ChatGPT在实现流式返回的时候选择了SSEServer-Sent Events而非WebSocket。 那么问题来了为什么ChatGPT选择了SSE而不是WebSocket呢。 SSE是什么 SSE全称Server-Sent Events译为服务器发送事件它是一种Web技术允许服务器端实时地向客户端推送信息。SSE运行在HTTP协议之上它利用持久化的HTTP连接以事件流Event Stream的形式将数据发送给客户端由客户端监听后获取。服务器端会定期向这个连接发送更新这些更新被封装在一个或多个HTTP包中每个包含有更新的事件流。这样当有新的更新时服务器就不需要等待客户端的请求而是直接将数据推送给客户端。当连接被关闭或出现故障时客户端会自动重新发送请求重新建立连接。这确保了数据传输的连续性和实时性。 那么SSE有什么优点呢? 单向通信SSE只支持从服务器到客户端的单向通信服务器可以主动发送数据用户只能接收。高效实时因使用持久化连接服务器可以实时地将数据推送给客户端而无需客户端频繁发起请求。 什么是WebSocket WebSocket是一种网络通信协议它最早被提出来是为了解决HTTP连接的一大限制HTTP协议中一个客户端发送给服务端的请求必须由服务端返回一个响应这使得服务端无法主动向客户端推送数据。WebSocket的通信过程如下 客户端通过发送一个特殊的HTTP请求向服务器请求建立WebSocket连接。这个请求类似于GET /chat HTTP/1.1 Upgrade: websocket Connection: Upgrade服务器响应这个请求确认建立WebSocket连接。这个响应类似于HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade之后客户端和服务器就可以通过这个常开的连接自由地发送或接收消息。 SSE与WebSocket的比较 你可能疑问为什么不直接使用WebSocket它似乎更为通用也同样支持实时数据推送。这就是我们需要对比两者的理由。 通信模式SSE只支持服务器向客户端的单向通信而WebSocket支持全双工通信即服务器和客户端可以互相发送数据。对于ChatGPT这样的应用来说大多数情况下用户的请求是稀疏的而服务器的响应是密集的因此SSE的单向通信模式更为合适。网络协议SSE运行在HTTP协议上因此它可以提供更高的兼容性和灵活性。举个例子如果你的产品已经部署在Web服务器上那么你大概率无需做任何改动就可以使用SSE技术。而WebSocket则需要单独的服务器和端口。 除此之外SSE和WebSocket在消息大小、连接数量、跨域支持等方面都有一些细微的差别我们在具体设计时需要根据实际需求和制约因素做出选择。 使用Golang和React实践SSE 首先我们需要创建一个Golang服务器。这个服务器将监听8000端口等待客户端的SSE连接请求并定时向连接发送消息。为了简单起见这里我们假设服务器每秒产生一条新消息。以下是Golang服务器的代码 package main ​ import (fmtlognet/httptime ) ​ func main() {http.HandleFunc(/events, func(w http.ResponseWriter, r *http.Request) {w.Header().Set(Content-Type, text/event-stream)w.Header().Set(Connection, keep-alive)w.Header().Set(Cache-Control, no-cache)w.Header().Set(Access-Control-Allow-Origin, *) ​for {fmt.Fprintf(w, data: Message at %s\n\n, time.Now())if flusher, ok : w.(http.Flusher); ok {flusher.Flush()} else {log.Println(Streaming unsupported!)return}time.Sleep(time.Second)}})http.Handle(/, http.FileServer(http.Dir(static)))log.Println(Listening on localhost:8000)http.ListenAndServe(localhost:8000, nil) }然后我们需要创建一个React客户端这个客户端会建立与Golang服务器的SSE连接并在收到新消息时更新页面。以下是React客户端的代码 import React, { useEffect, useState } from react; ​ function App() {const [events, setEvents] useState([]); ​useEffect(() {const eventSource new EventSource(http://localhost:8000/events);eventSource.onmessage (event) {setEvents((prevState) [...prevState, event.data]);};}, []); ​return (div classNameApph1Live updates from server/h1{events.map((event, i) p key{i}{event}/p)}/div); } export default App;这个应用程序将从服务器接收一个每秒更新一次的实时数据流并在客户端将这些更新显示出来。 总结 通过以上的分析和代码示例我们可以明白为什么ChatGPT会选择使用SSE而非WebSocket。请记住无论选择哪种实时数据推送技术必须考虑到你的应用程序的具体需求例如数据更新的速度、服务器和客户端的能力、网络条件等等。 如果上面的内容对你有帮助请点赞收藏哦我会分享更多的经验~
http://www.sczhlp.com/news/179318/

相关文章:

  • 商业网站建设案例课程下载百度制作网站推广
  • 站群系统哪个好用深圳电子商务网站 开发
  • 网站建设seo视频教程定制相册哪个网站好
  • 上海建设网站平台Wordpress源码下载站
  • 手机站和网站有区别吗做猎头需要用到的网站
  • 重庆公司网站制作公司网站 免费模板
  • 网站的搜索引擎深圳网站建设公司乐云seo
  • 旅游网站建设参考文献重庆展示型网站制作
  • 贵州企业网站开发公司做网站 属于电子商务
  • 成都网站logo设计h5制作软件 知乎 推荐
  • 哪些网站可以做招商广告php网站页面转wordpress
  • 网站建设公司设计网页的工具WordPress论坛小程序
  • 西安网站seo推广wordpress文章页图片尺寸
  • 300元建站网站建设运维标准
  • 网站建设小程序公众号推广开发手机模板网站制作
  • 网站建设的岗位名称免费域名创建入口在哪
  • weui做购物网站的案例怎么建设影视网站
  • 公明网站建设wordpress 不同文章不同模板
  • 基因数据库网站开发价格长春网站制作推广
  • 建设工程质量协会网站家用电脑进行网站建设
  • 定制网站开发方案简易app开发软件
  • 山西太原做网站网站备案时间也太慢了
  • 前端做兼职网站公司网站宣传设计
  • wordpress导入产品南宁seo推广优化
  • 建一个大网站需要的时间深圳竞价托管公司
  • 四平网站建设服务钟祥网站建设
  • AI元人文的硅基实现可行性Ai研究报告
  • 利用linux系统自带的cron 定时备份数据库,不需要写代码了
  • centos服务器实时备份
  • wordpress自定义字段不全站显示建网页的公司