WebSocket 是基于 TCP 连接的全工作通信协议, WebSocket 是维持网络通信的协议, 而不是 HTTP 等非持久性协议 。

WebSocket 是基于 TCP 连接的全工作通信协议, WebSocket 是维持网络通信的协议, 而不是 HTTP 等非持久性协议 。
它不仅允许客户请求服务器,还允许服务提供商主动将数据传送给客户。 WebSocket API的客户和服务器只需要握手,即刻建立持续连接和双向数据传输。
为什么我们需要 WebSocket?
HTTP 和 HTTP/1.1 处理程序用于网络应用程序结构。 HTTP 是用于请求以客户/服务器模式作出答复的协议, 客户( 通常是浏览器)向服务器提出 HTTP 请求, 服务器对请求的资源( 如 HTML 文档) 作出答复 。
HTTP没有状态,也就是说,无身份协议具有某些优势,例如服务器不需要保存关于会话的信息,因此不需要保存数据。然而,这也意味着在每次HTTP请求和答复中都提供关于请求的重复信息,例如使用 Cookie 检查用户状态。
随着HTTP协议在客户与服务器之间通信所需的信息量的增加,HTTP协议在客户与服务器之间通信所需的信息量也随之增加。
从根本上说,HTTP仍然是一个半双轨协议,这意味着信息流动只能同时是单向的:客户将请求发送给服务器(单向),然后服务器回应请求(单向),半工作模式的通信效率相当低。
同时,HTTP协议有一个弱点:对话只能由客户发起。
这一单向请求的区别在于,如果服务器的状态发生变化,它无法主动告知客户。
为了能够及时获得服务器更新,我们探索了许多办法:
- 圆圈( 圆圈 ) : 一次又一次地向服务器发送要求获取任何新信息的请求。 不准确、 延迟和大量不正确的数据交换 。
- 长的民意测验: 客户向服务器询问信息, 并预设连接时间长度 。 在从服务器收到新信息或连接超时之前, 此技术被称为“ 挂起 ” 或“ 挂起 ” 。 服务器资源的使用对轮换没有好处, 也没有标准化 。
- 流体技术:使用流体技术,客户提交请求,服务器发送并保持一个不断更新并保持开放(可能是无限的或指定的)的开放回答。服务器随时在有信息需要发送客户时更改其回复。服务器从未发送完整的 HTTP 回复。 代理和防火墙回复可能被缓存,导致信息提供技术出现更大的延误:使用流体技术,客户提交请求,服务器发送并保持一个不断更新并保持开放(可能是无限的或指定的)的开放回答。服务器随时在有信息需要发送客户时更改其回复。服务器从未发送完整的 HTTP 回复。 代理和防火墙回复可能被缓存,导致信息交付的延误增加。
这些技术可以进行近实时通信,但也需要HTTP的查询和对头条新闻的答复,以及大量额外和不必要的头条数据和延迟时间,此外,在每种情况下,客户必须等待回访请求后再发出后续请求,这大大增加了延迟时间。
究竟什么是WebSocket?
Websocket是一个自然的、全时的、双向的、单一链接的连接,它克服了不适合实时通信的HTTP协议问题,于2008年首次提出,并于2011年成为国际标准。
Websocket 协议使客户端和服务器之间能够通过互联网进行实时通信,并支持二进制数据和文本字符串的传输。
该协议以TCP协议为基础,由第一次握手和随后的基本信息结构组成。 与HTTP协议不同,Websocket连接一旦建立,允许双向实时对话。

其特点包括:
(1) 服务器端使用TCP协议更容易操作。
(2) 与HTTP协议有很强的兼容性:默认端口同样为80和443,握手阶段采用HTTP协议,使HTTP代理服务器难以屏蔽并使用。
(3) 数据格式是轻量级的,性能成本最低,传输效率高。
(4) 您可以选择发送文本或二元数据。
(5) 没有统一的制约因素,客户可以与任何服务器通信。
相似技术
Server-sent Events(SSE):
https://www.ruanyifeng.com/blog/2017/05/server-sent_events.html
https://www.cnblogs.com/goloving/p/9196066.html
SPDY (已宣布的“SPEDY”) 不再支持, 已被 HTTP/2 取代 。
https://baike.baidu.com/item/SPDY/3399551#7
WebRTC
https://baike.baidu.com/item/WebRTC/5522744
通信原理
如何创建 WebSocket 连接?
如前所述,WebSocket在握手阶段采用了HTTP协议,WebSocket借了HTTP协议的一部分来完成握手。 (HTTP握手三次,但仅一次在此)
HTTP 请求和对第一节的答复

请求网页套件和对标题的答复

链接通信模拟
HTTP 轮询
第一个是ajax 集成, 它有一个基本的逻辑, 让浏览器每隔几秒钟向服务器发送查询, 看看是否有新的信息 。
场景再现:
- 啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,
- 从服务器没有( 请求)
- 啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,
- 不,客户先生。 (导言)
- 啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,
- 你太讨厌了,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不(导言)
- 啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦
- 服务员:好吧,好吧,好吧。给你。(导言)
- 啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦,啦
- 没什么,什么都没有,什么都没有
如上所述,四舍五入是一个不断进行的过程,即建立 HTTP 连接,然后等待服务结束处理,这反映了 HTTP 协议的另一个方面,即反应性协议。 与此同时,在每次 HTTP 请求和答复结束时,服务器丢弃所有客户信息,而下一个请求必须不带身份识别信息(cookie ) 。
WebSocket
如果服务器支持 WebSocket 协议( 有两个界面), 客户端则通过 http ( 骑马) 询问服务器, 但也通过 升级 : webSocket 和 Connect: 更新 (两个管), 使用 WebSocket 协议提供可用信息( 丢弃马匹 ), 并随后使用两个管进行传输, 直到其中一方故意切除管。 如果服务器不支持, 客户端请求链接失败并返回错误 。
网布套子出现,清理, 并解决了这些问题。
因此,上述设想可能改变如下。
- la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la, la
- 客户端: 好, 表示您想要使用 Websocket 协议( 已切换的 HTTP 协议) 。
- 客户:请尽快给我详细信息。
- 服务:好吧,我偶尔会通知你。
- 客户Balabala开始绘制Balabala的作战地图。
- * Sky * 空的巴拉是服务器。
- 客户:我的鼻子出血,所以我打扫干净...
- 服务: 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
- 服务生:真有趣,哈哈哈
本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/11997.html。