问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

WebSocket 的实现

发布网友 发布时间:2022-09-19 02:57

我来回答

1个回答

热心网友 时间:2023-10-24 22:00

长连接:一个链接上可以连续发送多个数据包,在链接期间,如果没有数据包发送,需要双方发链路检查包

TCP/IP:TCP/IP 属于传输层,主要解决网络中的数据传输问题,只管传输数据。但这样对传输的数据没有一个规范的封装、解析等处理。使得传输的数据难以识别,所以才有了应用层协议对数据进行的封装、解析等,如http协议。

HTTP:HTTP协议是应用层协议,用于分装解析传输数据。 从HTTP1.1开始其实就默认开启了长链接,也就是请求头header中可以看到Connection:Keep-alive。但是长连接只是说保持了(服务器可以告诉客户端保持时间Keep-Alive:timeout=20;max=20;)这个TCP通道,并采用服务器和客户端应答模式(Request-Response),不需要再创建一个链接通道,做到一个性能优化。

socket:与HTTP协议不一样,socket不是协议,他是在程序层面上对传输层协议(像TCP/IP)的接口封装。我们知道传输层的协议,是解决数据在网络中传输的问题的,那么socket(套接字)就是传输通道两端的接口。

Websocket:WebSocket是包装成了一个应用层协议作为socket,从而能够让客户端和远程服务端通过web建立全双工通信。

WebSocket API 是HTML5 推出的东西。在客户端我们可以通过HTML5 所提供的API 对websocket 进行创建、发送数据、监听信息、监听报错等功能( HTML5 WebSocket )

我们知道WebSocket 是在Socket的基础上实现的,所以我们要做的是对现有的Socket协议进行升级。

步骤:客户端发送websocket请求-->服务端接受并识别该请求-->对该请求协议进行升级--> 返回给客户端 --> websocket 通道建立 --> 客户端/服务端发送数据

协议升级

在这里需要注意的是头部信息和头部信息中的Sec-Websocket-Accept的值。

该值需要是一个通过base64加密的哈希值(sha1)。 而该加密所用的数据是客户端传过来的sec-websocket-key的值和MAGIC_STRINC内的固定值。 对MAGIC_STRINC的说明

Webscoket 中传输的数据是数据帧(frame)

数据帧有多种类型 主要有:文本型、二进制数据

数据帧结构

每一列代表一个字节,一个字节8位,每一位又代表一个二进制数。

创建数据帧

解数据帧

心跳检查

由于websocket 不进行交互会关闭通道所以,才有了心跳检查。

websocket与和他http的区别

基于node实现websocket协议

使用nodeJS在HTTP上实现WebSocket

如何让我的服务器返回正确的Sec-WebSocket-Accept标头值

学习WebSocket协议—从顶层到底层的实现原理

websocket 协议帧 解析

nodejs实现Websocket的数据接收发送

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
氢气瓶收口 Access Token & Refresh Token 详解以及使用原则 良溪村村落景点 支付宝上首度试水养老目标基金,用户如何购买? 上上下下、仔仔细细地看 叫什么看 新手创业应具备哪些条件 德阳科贸职业学院中职部招生专业有哪些?有会计专业吗? 德阳科贸职业学院一年学费是多少 格力天花机E1是什么原因造成的 山东困觉是什么意思? 昨晚梦到水鬼了,求解 请问双屏显示器怎么设置 请问一下双屏显示器怎么设置 刘姓中间带路字怎么起名 为什么我的手机没有个性化语音? 个性化语音提示是干什么的? OPPO RenoZ的个性化语音在哪? 怎么开通个性化语音和取消个性化语音服务? 梦见池里拔水拔了条大鱼 翻译词组 the only child 英汉语互译,“问路”,“看上去一样”,“the/only/child”。 most of us are the only child in our families 句子分析语法,翻译 She was the only child in the family, but they didn’t ___her. 独生子女用英语怎么说 the only child是什么意思 我的父母只有我一个孩子 这话英语怎么说 衡水高铁南站在哪个位置 pascal 常用的循环结构有几种 敖荣泽这名字有什么意义 移动公司发放的宜居城市交通卡在哪里开通? 迁飞一词中迁是什么意思 迁飞的迁是什么意思 dnf帝血刹天pk怎么快速落地 雁来月是什么意思 dnf85帝血弑天pk杂堆攻速 鸿雁指什么意思 赵匡胤 李世民 汉武帝 成吉思汗 朱元璋 秦始皇 谁厉害啊?? 中国人被称为炎黄子孙,你知道炎帝和黄帝是什么关系么? 如果让我们的永乐大帝和康熙大帝来一场大pk,你会支持谁呢? 上帝VS如来佛祖~~~谁厉害些??? 柏凡琪的彩妆有人用过吗?我想买他家的眼线笔不知道怎么样? 什么牌子的粉饼好 哪种睫毛膏好,涂的浓不粘 什么牌子的粉不错啊? 苏州那里有卖美肤宝 懒人黑胡椒土豆泥的做法步骤图,怎么做好吃 土豆泥的做法是什么 为什么我的IE在任务管理器里会一直自己启动,但在桌面上根本就没有网页打开,而且还不是启动一个两个 桌面没有任何东西 开始按钮也没有 鼠标右击也没有反应 我开浏览器是用任务管理器开的 这是怎么回事? 因特网上许多复杂网络和许多不同类型的计算机之间能够互相通信的基础是