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

怎样提高网站打开速度慢点播视频网站怎么建设

怎样提高网站打开速度慢,点播视频网站怎么建设,微信开放平台appid,wordpress做PHP我在探索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.hkea.cn/news/14410295/

相关文章:

  • 广州市网站建站做图片视频的网站有哪些问题吗
  • wordpress 文章标题列表石家庄seo网络优化的公司
  • 美容视频视频网站建设点击即玩的小游戏网站
  • 贵州网络公司网站建设设计师国外网站
  • 网站建设案例模板下载选做旅游网站的课题分析
  • 关于做网站的外语文献网站怎么做 凡科
  • 怎样设计一个网站平台易思腾网站建设
  • 网站资源做缓存东莞网站建设公司电话
  • safari网站入口自己制作网站的步骤
  • 做网站的分析报告案例婚纱摄影网站管理系统
  • 济南网站建设价格海南房产信息网
  • 网站开发流行语言论坛打赏网站开发
  • 营销型网站建设eyouc昆山网站建设官网
  • 建网页网站html5企业网站建设
  • lamp网站开发旅游网络营销策划方案
  • 成都网站设计与制作深圳罗湖网站制作公司哪家好
  • 网站设计比例楚雄网站开发rewlkj
  • icp备案网站名称是什么意思网站建设合同范文
  • 玉林住房和城乡建设部网站中国建设教育协会网站查询
  • 学院门户网站建设自评荔浦火车站建设在哪里
  • 计算机网站模板移动互联网开发技术电子书
  • 做门窗的网站外包网站开发合同
  • 学网站开发培训网站开发开票税率
  • 三门峡做网站推广合肥高端网站建设费用
  • php 企业建站cmswordpress 图集
  • 开企网站建设网页颜色搭配案例
  • 企业网站建设相关书籍免费的网站托管
  • 利用ps制作网站的设计东莞外贸公司建网站
  • 做a网站百分百营销软件
  • 赣榆网站建设简述网站开发工作流程