ChatGPT为啥不用Websocket而是EventSource?

2024-06-09 10:44

本文主要是介绍ChatGPT为啥不用Websocket而是EventSource?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击下方“JavaEdge”,选择“设为星标”

第一时间关注技术干货!

免责声明~

任何文章不要过度深思!

万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案」

不要急着评判文章列出的观点,只需代入其中,适度审视一番自己即可,能「跳脱出来从外人的角度看看现在的自己处在什么样的阶段」才不为俗人

怎么想、怎么做,全在乎自己「不断实践中寻找适合自己的大道」

1 前言

在ChatGPT官网我们可以看到,对话的方式仅仅只有一个post请求,而没有使用IM中使用的websocket链接。

0db67a205c5281f7fde88399dc824e66.png

和普通POST请求不一样的,返回信息Response没了,取而代之的是EventStream

EventStream是啥玩意?gpt 一下,原来是Web API中的EventSource接口返回的数据。

2 MDN官方描述

EventSource 接口是 web 内容与服务器发送事件 一个 EventSource 实例会对HTTP服务器开启一个持久化的连接,以 text/event-stream 格式发送事件,此连接会一直保持开启直到通过调用 EventSource.close() 关闭。

EventSource也称为 Server-Sent Events,SSE。

3  EventSource V.S  Websocket

3.1 EventSource

3.1.1 优势
① 简单易用

EventSource API非常简单,只需要创建一个 EventSource 对象并指定服务器端的 URL,就可以开始接收服务器推送的消息。相比之下,WebSocket 需要处理更多的事件和状态变化。

② 服务器推送

EventSource适用于服务器主动向客户端推送数据,客户端只能接收服务器发送的事件。

服务器端实现简单:服务器端可以通过简单的 HTTP 响应流推送事件给客户端,而不需要处理复杂的 WebSocket 协议。

③ 自动重连

EventSource 有内置的自动重新连接功能,断开连接后会自动尝试重新连接,适用于长期保持连接并接收事件流的场景。

这在 WebSocket 中需要手动实现。

④ 兼容性

EventSource在大多数现代浏览器中得到支持,无需额外的库支持。

利用现有的 HTTP 基础设施:EventSource 使用标准的 HTTP 协议,易通过现有的代理、防火墙和负载均衡器,而这些在 WebSocket 中可能需要额外配置。

长连接:SSE 建立后会保持一个长期的 HTTP 连接,并不断从服务器接收数据。

3.1.2  劣势
① 单向通信

只支持从服务器到客户端的单向通信,客户端无法向服务器发送数据。如需双向通信(例如聊天应用),WebSocket 更适合。

① 较少的功能

相比于WebSocket,EventSource提供的功能较为有限,仅限于接收服务器发送的事件。

② 性能和效率

效率较低:在大量小消息或高频率消息传输的场景下,WebSocket 的二进制传输和帧控制带来更高的效率。

3.1.3 适用场景

考虑以上优劣,EventSource 适用于以下场景:

  • 实时更新:需要从服务器实时接收数据更新,如股票行情、新闻推送等。

  • 简单的通知系统:例如简单的服务器状态或系统通知。

  • 资源受限的应用:对于只需要简单实时通信的应用,EventSource 的实现和维护成本更低。

综上所述,选择 EventSource 而非 WebSocket 主要是因为其简单性、HTTP 兼容性、自动重连功能以及更易于实现和维护的服务器端需求。然而,如果应用需要复杂的双向通信和高效的数据传输,WebSocket 会是更好的选择。

3.2 WebSocket

3.2.1 优势
① 双向通信

WebSocket支持双向通信,客户端和服务器可以彼此发送数据。

② 实时性

WebSocket提供了更低的延迟和更快的数据传输速度,适用于实时性要求较高的应用场景。

③ 丰富的功能

WebSocket提供了更多的功能,例如数据帧的自定义和二进制数据的传输等。

3.2.2 劣势
① 复杂性

WebSocket API相对于EventSource更为复杂,使用起来可能需要更多的代码和理解。

② 需要服务器支持

使用WebSocket需要服务器端实现对应的WebSocket协议,而EventSource只需要服务器端支持发送事件即可。

③ 兼容性

相对于EventSource,WebSocket在某些较旧的浏览器或网络环境中的支持可能不够广泛。

综上,EventSource 适用于服务器主动推送事件给客户端,并且在保持长期连接和接收事件流时表现良好。WebSocket 适用于需要实时双向通信和更丰富功能的场景,但需要服务器端和客户端都支持 WebSocket 协议,选择使用哪种技术应基于具体需求和应用场景进行评估。

4 ChatGPT选择理由

个人猜测是考虑到:

4.1 仅服务器推送

EventSource专注于服务器向客户端主动推送事件的模型,这对于ChatGPT对话非常适用。ChatGPT通常是作为一个长期运行的服务,当有新的回复可用时,服务器可以主动推送给客户端,而不需要客户端频繁发送请求。

4.2 自动重连和容错

EventSource具有内置的自动重连机制,它会自动处理连接断开和重新连接的情况。这对于ChatGPT对话而言很重要,因为对话可能需要持续一段时间,连接的稳定性很重要。

4.3 简单易用

相比WebSocketEventSource的API更加简单易用,只需实例化一个EventSource对象,并处理服务器发送的事件即可。这使得开发者可以更快速地实现对话功能,减少了一些复杂性。

4.3 浏览器兼容性

EventSource在大多数现代浏览器中得到广泛支持,包括移动端浏览器。相比之下,WebSocket在某些旧版本的浏览器中可能不被完全支持,需要考虑兼容性问题。

WebSocket也是一种很好的选择,特别是当需要实现更复杂的实时双向通信、自定义协议等功能时,或者对浏览器的兼容性要求较高时。最终选择使用WebSocket还是EventSource应该根据具体的项目需求和技术考虑来确定。

注意EventSource只支持GET请求。ChatGPT是通过自己重写方法来发起POST请求的。

写在最后

公众号JavaEdge 专注分享软件开发全生态相关技术文章视频教程资源、热点资讯等,如果喜欢我的分享,给 🐟🐟 点一个 👍 或者 ➕关注 都是对我最大的支持。

欢迎长按图片加好友,我会第一时间和你分享软件行业趋势面试资源学习途径等等。

273df67ff5cae404276332592d38ae39.jpeg添加好友备注【技术群交流】拉你进技术交流群

关注公众号后,在后台私信:

  • 回复【架构师】,获取架构师学习资源教程

  • 回复【面试】,获取最新最全的互联网大厂面试资料

  • 回复【简历】,获取各种样式精美、内容丰富的简历模板

  • 回复 路线图,获取直升Java P7技术管理的全网最全学习路线图

  • 回复 大数据,获取Java转型大数据研发的全网最全思维导图

  • 更多教程资源应有尽有,欢迎关注并加技术交流群,慢慢获取

这篇关于ChatGPT为啥不用Websocket而是EventSource?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1044962

相关文章

揭秘未来艺术:AI绘画工具全面介绍

📑前言 随着科技的飞速发展,人工智能(AI)已经逐渐渗透到我们生活的方方面面。在艺术创作领域,AI技术同样展现出了其独特的魅力。今天,我们就来一起探索这个神秘而引人入胜的领域,深入了解AI绘画工具的奥秘及其为艺术创作带来的革命性变革。 一、AI绘画工具的崛起 1.1 颠覆传统绘画模式 在过去,绘画是艺术家们通过手中的画笔,蘸取颜料,在画布上自由挥洒的创造性过程。然而,随着AI绘画工

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

AI儿童绘本创作

之前分享过AI儿童绘画的项目,但是主要问题是角色一致要花费很长的时间! 今天发现了这款,非常奈斯! 只需输入故事主题、风格、模板,软件就会自动创作故事内容,自动生成插画配图,自动根据模板生成成品,测试效果如下图。 变现方式:生成儿童绘本发布到各平台,吸引宝妈群体进私域。  百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全

人工和AI大语言模型成本对比 ai语音模型

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。 上一专题搭建了一套GMM-HMM系统,来识别连续0123456789的英文语音。 但若不是仅针对数字,而是所有普通词汇,可能达到十几万个词,解码过程将非常复杂,识别结果组合太多,识别结果不会理想。因此只有声学模型是完全不够的,需要引入语言模型来约束识别结果。让“今天天气很好”的概率高于“今天天汽很好”的概率,得到声学模型概率高,又符合表达

智能客服到个人助理,国内AI大模型如何改变我们的生活?

引言 随着人工智能(AI)技术的高速发展,AI大模型越来越多地出现在我们的日常生活和工作中。国内的AI大模型在过去几年里取得了显著的进展,不少独创的技术点和实际应用令人瞩目。 那么,国内的AI大模型有哪些独创的技术点?它们在实际应用中又有哪些出色表现呢?此外,普通人又该如何利用这些大模型提升工作和生活的质量和效率呢?本文将为你一一解析。 一、国内AI大模型的独创技术点 多模态学习 多

【新闻】AI程序员要来了吗?阿里云官宣

内容提要 6 月 21 日,在阿里云上海 AI 峰会上,阿里云宣布推出首个AI 程序员。 据介绍,这个AI程序员具备架构师、开发工程师、测试工程师等多种岗位的技能,能一站式自主完成任务分解、代码编写、测试、问题修复、代码提交整个过程,最快分钟级即可完成应用开发,大幅提升研发效率。 近段时间以来,有关AI的实践应用突破不断,全球开发者加速研发步伐。有业内人士坦言,随着大模型性能逐渐提升,AI应

AI元宇宙

随着科技的迅猛发展,人工智能(AI)迎来了一个宇宙大爆发的时代。特别是以GPT为代表的生成式大模型的诞生和不断进步,彻底改变了人们的工作和生活方式。程序员与AI协同工作写代码已成为常态,大模型不仅提高了工作效率,还为人类带来了无限的可能性。 AI元宇宙http://ai.toolxq.com/#/如同生物进化出眼睛打开了三维世界的元宇宙之后,GPT打开了人+AI工作模式的新时代,程序员的人生被划

AI学习指南机器学习篇-朴素贝叶斯处理连续特征和离散特征

AI学习指南机器学习篇-朴素贝叶斯处理连续特征和离散特征 在机器学习领域,朴素贝叶斯是一种常用的分类算法,它的简单性和高效性使得它在实际应用中得到了广泛的应用。然而,在使用朴素贝叶斯算法进行分类时,我们通常会面临一个重要的问题,就是如何处理连续特征和离散特征。因为朴素贝叶斯算法基于特征的条件独立性假设,所以对于不同类型的特征,我们需要采取不同的处理方式。 在本篇博客中,我们将探讨如何有效地处理

AI赋能天气:微软研究院发布首个大规模大气基础模型Aurora

编者按:气候变化日益加剧,高温、洪水、干旱,频率和强度不断增加的全球极端天气给整个人类社会都带来了难以估计的影响。这给现有的天气预测模型提出了更高的要求——这些模型要更准确地预测极端天气变化,为政府、企业和公众提供更可靠的信息,以便做出及时的准备和响应。为了应对这一挑战,微软研究院开发了首个大规模大气基础模型 Aurora,其超高的预测准确率、效率及计算速度,实现了目前最先进天气预测系统性能的显著

AI炒股:自动画出A股股票的K线图并添加技术指标

在deepseek中输入提示词: 你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下: 用AKShare库获取股票贵州茅台(股票代码:600519)在2024年3月7日到2024年6月5日期间的历史行情数据-前复权。 然后绘制K线图,并在K线图上添加布林线、MACD 注意: 每一步都要输出信息到屏幕上; 日期格式是YYYYMMDD; 设置中文字体,以解决