从ChatGPT聊天服务上深挖Http、WebScoket和SSE推送技术的区别

简述 —— 三种方式进行通讯

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

回忆TCP/IP协议

请在此添加图片描述

其中,三次握手过程的步骤为:

  1. 客户端向服务端发送 SYN 报文,其中 seq 表示客户端的初始序列号。
  2. 服务端收到 SYN 报文后,向客户端发送 SYN+ACK 报文,其中 ack 表示服务端收到了客户端的序列号,seq 表示服务端的初始序列号。
  3. 客户端收到 SYN+ACK 报文后,向服务端发送 ACK 报文,其中 ack 表示客户端收到了服务端的序列号,seq 表示客户端的下一个序列号。

四次挥手过程的步骤为:

  1. 客户端向服务端发送 FIN 报文,其中 seq 表示客户端最后一次发送数据的序列号。
  2. 服务端收到 FIN 报文后,向客户端发送 ACK 报文,其中 ack 表示服务端收到了客户端的序列号。
  3. 服务端完成数据传输后,向客户端发送 FIN 报文,其中 seq 表示服务端最后一次发送数据的序列号,ack 表示服务端收到了客户端的序列号。
  4. 客户端收到 FIN 报文后,向服务端发送 ACK 报文,其中 ack 表示客户端收到了服务端的序列号。

从ChatGPT项目中引发的思考

项目地址:Grt1228/chatgpt-steam-output: Open AI ChatGPT流式输出。Open AI Stream output. ChatGPT Stream output.GPT-3.5 (github.com)

有感兴趣的朋友可以去拉取下来跑一跑,但是需要过河,这里就不做过多的教程,百度就有🐕

下面我直接发测试图

基于SSE

image-20230505115552583

image-20230505115630534

image-20230505115810329

可以看出,SSE是每次客户端都会创建链接,然后服务端返回请求。

但是这个项目又是如何保存会话的?

挖掘源码发现,是在JVM内存中保存了Message上下文

image-20230505120131876

image-20230505120925545

sdk内部采用okHttp进行事件和远程调用的绑定,也就是说每次有请求响应的时候拼装返回前端

image-20230505121842848

image-20230505122005437

image-20230505122151787

基于WebSocket

image-20230505125742757

我们可以看到,这两次会话都是在一次请求里面的

分析

HTTP协议

请在此添加图片描述

HTTP/1.0 和 HTTP/1.1 是 HTTP 协议的两个版本,它们之间存在以下几点区别:默认是否开启长连接:HTTP/1.0 默认不支持长连接,需要在请求头中显式地设置 Connection: Keep-Alive 来启用,而 HTTP/1.1 默认支持长连接,无需额外设置。请求方式是否有区别:HTTP/1.1 引入了新的请求方式(如 PUT、DELETE、OPTIONS、TRACE、CONNECT 等),以及增加了对请求方式的扩展性。缓存机制是否有变化:HTTP/1.1 引入了缓存控制机制,可以通过设置 Cache-Control、ETag、If-None-Match 等头部信息来控制缓存的行为,从而提高网站性能。分块传输编码是否有支持:HTTP/1.1 引入了分块传输编码(chunked transfer encoding),可以更高效地传输大型数据。Host 头部是否必须:HTTP/1.0 中没有 Host 头部,而在 HTTP/1.1 中,所有的请求头都必须包含 Host 头部,以便服务器能够处理多个域名和虚拟主机的请求。综上所述,HTTP/1.1 是 HTTP/1.0 的升级版本,引入了许多新特性和改进,提高了网络性能和可扩展性。HTTP/2 是支持多路复用(Multiplexing)的协议,这意味着可以同时发送多个请求,而不需要等待前一个请求的响应。因此,HTTP/2 不是完全的异步操作,而是支持同时处理多个请求和响应的协议。使用 HTTP/2 可以显著提高网站性能和加载速度,因为可以更有效地利用网络资源。

WebSocket协议

请在此添加图片描述

img

HTTP长连接是指在一个TCP连接上可以发送多个HTTP请求,而不是每个HTTP请求都需要新建一个TCP连接。HTTP1.1使用了HTTP长连接的机制,可以在一个TCP连接上发送多个HTTP请求和响应,从而避免了重复建立和断开TCP连接的开销。而WebSocket协议是在一个已建立的TCP连接上实现全双工通信,不需要重复建立TCP连接。

SSE推送送技术

请在此添加图片描述

SSE(Server-Sent Events)也是一种基于HTTP协议的服务器推送技术,用于实现服务器向客户端推送数据的功能。与WebSocket不同的是,SSE采用的是“单向通信”的方式,即只有服务器向客户端推送数据,客户端不能像WebSocket一样主动向服务器发送数据。
SSE的通信过程也是基于HTTP协议进行的,客户端通过发送一个HTTP请求与服务器建立连接,服务器保持连接处于打开状态,随时可以向客户端推送数据。与WebSocket类似,SSE也可以支持长连接,避免了频繁地建立和关闭连接的开销。但与WebSocket不同的是,SSE的通信过程中,服务器只能向客户端推送文本类型的数据,而不能推送二进制数据。
下面是SSE的通信过程示意图:
请在此添加图片描述

其中,Client发送SSE Request建立连接请求,Server返回HTTP Response并设置Content-Type为text/event-stream,表示服务器将向客户端推送SSE数据。服务器可以在任意时刻向客户端发送一条SSE消息,格式为event: <event name>\ndata: <data>\n\n,其中event表示事件名称,data表示要推送的数据。注意,每条消息以两个换行符结尾。
需要注意的是,与WebSocket不同,SSE的通信是基于HTTP协议的,每次请求-响应的过程中都会经过三次握手和四次挥手的过程。因此,SSE并不是真正意义上的实时通信,而是通过保持长连接的方式,实现了一种近似于实时的服务器推送机制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/46623.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android腾讯云通信集成记录(快速实现聊天功能)

利用小假期的时间学习了一下怎么使用腾讯云通信&#xff0c;过程中的坑还是比较多&#xff0c;写篇博客记录一下集成过程方便自己以后查看。 先看下效果图&#xff1a; 首先需要去腾讯云通信的官网去登录&#xff0c;并且创建一个云通信应用。 免费的就好&#xff0c;腾讯云…

技术干货 | 网易云信大规模聊天室系统架构解析

导读&#xff1a;聊天室是一类非常重要的 IM 系统&#xff0c;不同于单聊和群聊&#xff0c;聊天室是一种大规模的实时消息分发系统。本文我们来详细介绍一下网易云信大规模聊天室系统的具体架构以及实践应用案例。 文&#xff5c;曹佳俊 网易云信资深服务端开发工程师 聊天室有…

2022倒带-NutUI

前言 时光飞逝&#xff0c;流年似水&#xff0c;让我们倒带 2022&#xff0c;回首这跌宕起伏一年走过的 “升级之路”。 NutUI 表现如何&#xff1f; 成绩单等着您打分&#xff01; 2022 是 NutUI 在技术长廊中探索和成长的第四个年头&#xff0c;悄然度过了自己的“孩提“时…

chatgpt赋能python:Python量化开发:实现金融市场的策略化投资

Python量化开发&#xff1a;实现金融市场的策略化投资 随着金融市场竞争的日益激烈&#xff0c;传统的以人工分析及定量研究为主的投资方法已经无法满足投资者的需求。因此&#xff0c;数字化投资逐渐成为趋势&#xff0c;采用量化投资来实现金融市场的策略化投资已经成为了投…

英语基础:四级431、六级没过,考研英语78分经验分享 (23考研)

前言 博主备考时的英语基础&#xff1a;英语四级431分, 六级没过 研究生英语二分数&#xff1a;78分 ps&#xff1a;也许这个分数段不是一些大佬的目标分数 (80)&#xff0c;本篇文章的目的只是帮助一些英语基础差的同学&#xff0c;提供一些备考经验。 一、基础阶段 时间&…

考研复试_英语面试_必备的30个问题

前言&#xff1a; 本人英语口语处于那种的“哑巴式”&#xff0c;没有准备就根本不知道扯啥。于是整理了一些出现频率最高的英语问题&#xff08;回答对我而言两三句简单句就撑死了&#xff0c;因没有参考价值大家就还是自己准备回答&#xff09;&#xff0c;以防到时候陷入迷之…

国外问卷调查有哪几种类型?

大家好&#xff0c;我是小飞匠&#xff0c;今天来聊聊国外问卷调查分为哪几种&#xff1f;新手适合做哪种&#xff1f;国外问卷调查项目最近一直很火&#xff0c;咨询的人也比较多。因为国外问卷调查其实分为很多种类。通过不同的展现方式、付款方式&#xff0c;我们称为不同的…

什么是海外调查问卷?都有哪些形式

国内外有很多正规的公司都是做这个行业的。为什么会有这么多公司在做这个行业&#xff1f;主要是由于市场上问卷调查需求较多决定的&#xff0c;很多商家在进行新产品研发前的需求以及产品销售后的一些满意度征集时&#xff0c;往往会通过这种问卷调查公司收集特定人群的意见与…

国外问卷调查好做吗?为大家分享干货!

随着5G的出现&#xff0c;2021可谓是真正的进入到了互联网时代。互联网时代的出现更大的为人们提供了更多的机会&#xff0c;让人们的工作以及生活都得到了更大的便利。也使人们的创业的机会变得更多了起来。 在互联网的背景下&#xff0c;足不出户的进行互联网的创业的人们多了…

开源的问卷调查系统

一、项目简介 今天推荐一款基于 JAVA WEB 的开源问卷表单系统。 二、实现功能 支持创建问卷 支持设计问卷 支持基础题型 支持收集卷子 支持默认统计 支持原始答卷 三、技术选型 后台开发&#xff1a;Java、SpringBoot【企业版】&#xff0c;Struts2【开源版】 前端开…

海外调查问卷中的站点查

国内外很多正规公司都在从事这个行业。为什么有这么多公司在做这个行业&#xff1f;主要是由于市场上对问卷调查的需求量很大。很多商家在收集新产品研发前的需求和产品销售后的一些满意度时&#xff0c;往往会通过这种问卷调查公司来收集特定人群的意见和想法。这些问卷调查公…

微信端问卷调查

上周&#xff0c;股份公司突然需要问卷调查功能&#xff0c;要的很着急。和一同事用了大约两天时间&#xff0c;将该功能完成。 项目情况是&#xff1a;要求在PC、微信端可以填写内容&#xff1b;微信端根据二维码打开问卷页面。 UI框架&#xff1a; bootstrap 效果如下&…

微信小程序-调查问卷

调查问卷 搭建本地服务器新建小程序注意 搭建本地服务器 使用node.js&#xff08;要安装node.js&#xff09;搭建本地HTTP服务器&#xff0c;在小程序所在目录创建web目录 &#xff0c;并在web目录下打开CMD&#xff0c;初始化项目 npm init -y然后安装express框架 npm inst…

在当前就业形势下,如何提高应届生在职场中的竞争力,让ChatGPT帮你解答

在当前就业形势下&#xff0c;应届生要提高自身的竞争力&#xff0c;可以从以下几个方面入手&#xff1a; 学习技能&#xff1a;不断学习提升自身专业和技能水平&#xff0c;获取行业认证证书&#xff0c;参加培训课程。 实习和项目实践&#xff1a;通过实践课程&#xff0c;公…

泰裤辣!ChatGPT帮你制定个人发展计划,助力你实现职场腾飞……

作为一名职场人&#xff0c;你是否曾经感到自己的职业生涯缺乏方向和规划&#xff1f; 是否曾经为了应对工作中的挑战而感到力不从心&#xff1f; 如果你的答案是肯定的&#xff0c;那么认真制定自己的个人发展计划&#xff0c;为自己的职业生涯打下坚实的基础就是你必须要做…

ChatGPT-看一看你还有多久失业

需求&#xff1a;将下列表格中的数据导入mysql数据库并且可以将mysql数据库上的数据导出到excel&#xff0c;如果让你做需要多久时间 第1次询问ChatGPT&#xff1a;一个excel内部有多个sheet&#xff0c;每个sheet的表头都是章节号、测试项、测试子项、用例名称、用例表示、测试…

【CCNA | 网络模拟器CPT系列】Cisco Packet Tracer 8.2.0 的安装 Ⅰ

目录 1. 下载 Cisco Packet Tracer2. 安装 Cisco Packet Tracer&#xff08;1&#xff09;许可协议界面&#xff08;2&#xff09;选择安装目录&#xff08;3&#xff09;选择开始菜单文件夹&#xff08;4&#xff09;选择附加任务&#xff08;5&#xff09;确认设置选择&#…

无线POE交换机突然离线导致AP下用户无法上网

环境&#xff1a; 华为S1730S-S 锐捷 NBS3100-24GT4SF 问题描述&#xff1a; 无线POE交换机突然离线导致AP下用户无法上网 交换机各个指示灯都正常&#xff0c;现在有无线信号 连接上获取不到ip 本地远程管理地址也访问不了 解决方案&#xff1a; 1.电脑直连这个交换机…

Cisco Packet Tracer应用登入后还是不能运行的问题

问题出现的可能性 版本低&#xff0c;达不到要求&#xff1b;建议下载最新版本试一 试&#xff0c;以下是8.2.1版&#xff08;在官网登入后资料中下载->如图1&#xff09;登入时注意选择China->如图2&#xff0c;登入后就可以使用->如图3 图1 图2 图3

Python 自动化办公应用大全(ChatGPT 版)

以下内容来自公众号逆锋起笔&#xff0c;关注每日干货及时送达 你被降维打击过吗&#xff1f; 在刘慈欣的科幻小说《三体》中&#xff0c;高级文明掌握了一种维度武器&#xff0c;可以将攻击目标所处的空间维度降低&#xff0c;使其无法生存。 二向箔飞出&#xff0c;整个太阳系…