WebSocket--技术文档--架构体系--《WebSocket实现原理以及关键组件》

news2024/11/30 8:58:06

WebSocket产生背景

简单的说,WebSocket协议之前,双工通信是通过多个http链接来实现,这导致了效率低下。WebSocket解决了这个问题。下面是标准RFC6455中的产生背景概述。

长久以来, 创建实现客户端和用户端之间双工通讯的web app都会造成HTTP轮询的滥用: 客户端向主机不断发送不同的HTTP呼叫来进行询问。

这会导致一系列的问题:

  • 1.服务器被迫为每个客户端使用许多不同的底层TCP连接:一个用于向客户端发送信息,其它用于接收每个传入消息。
  • 2.有些协议有很高的开销,每一个客户端和服务器之间都有HTTP头。
  • 3.客户端脚本被迫维护从传出连接到传入连接的映射来追踪回复。

一个更简单的解决方案是使用单个TCP连接双向通信。 这就是WebSocket协议所提供的功能。 结合WebSocket API ,WebSocket协议提供了一个用来替代HTTP轮询实现网页到远程主机的双向通信的方法。

WebSocket协议被设计来取代用HTTP作为传输层的双向通讯技术,这些技术只能牺牲效率和可依赖性其中一方来提高另一方,因为HTTP最初的目的不是为了双向通讯。

WebSocket实现原理

1、tcp协议的三次握手四次挥手的机制和过程依然存在

2、websocket协议本身有握手环节

3、websocket协议成功之后收发数据

WebSocket的实现过程如下:

  1. 客户端发起WebSocket连接请求。
  2. 服务器响应WebSocket连接请求,并完成握手过程。
  3. 客户端和服务器之间建立WebSocket连接。
  4. 客户端和服务器通过WebSocket连接进行双向通信。
  5. 当客户端或服务器想要关闭WebSocket连接时,可以通过发送Close帧来关闭连接。

WebSocket的实现细节如下:

  1. 客户端通过使用socket.io库或原生WebSocket API来发起WebSocket连接请求。
  2. 服务器需要配置WebSocket服务器的地址和端口号,并监听WebSocket连接请求。
  3. 在握手过程中,客户端和服务器交换一些数据,以确定WebSocket连接的参数。这些数据包括Key、Version、SubProtocol等。
  4. 一旦建立了WebSocket连接,客户端和服务器就可以通过WebSocket连接进行双向通信。通信的数据格式为JSON或二进制格式。
  5. 当需要关闭WebSocket连接时,客户端或服务器可以发送Close帧来关闭连接。Close帧中包含一个状态码和一个关闭原因,以告诉对方连接已经关闭。

总之,WebSocket的实现原理是通过建立一个持久的TCP连接,实现客户端和服务器之间的双向通信。其实现过程涉及到握手过程、数据传输和关闭连接等步骤。

websocket关键组件

WebSocket协议的关键组件包括以下几个:

  1. WebSocket客户端:WebSocket客户端存在于浏览器或其他可以运行WebSocket应用程序的环境中。它负责发起WebSocket连接请求,并通过WebSocket连接与服务器进行通信。
  2. WebSocket服务器:WebSocket服务器是运行WebSocket服务端的程序,它负责响应WebSocket连接请求,并与客户端建立WebSocket连接。WebSocket服务器可以基于各种不同的平台和技术实现,如Node.js、Java、C#等。
  3. WebSocket连接:WebSocket连接是WebSocket客户端和服务器之间建立的持久连接,它允许双方进行双向通信。一旦连接建立,客户端和服务器就可以通过该连接发送和接收消息。
  4. WebSocket帧:WebSocket帧是WebSocket连接中传输的基本单位。它包含了控制信息(如帧类型、帧长度等)和有效载荷数据(实际传输的数据)。WebSocket帧有两种类型:文本帧和二进制帧。
  5. WebSocket协议:WebSocket协议是一种应用层协议,它基于HTTP协议,但不需要进行多次握手和响应。WebSocket协议通过TCP连接进行通信,实现了客户端和服务器之间的双向通信。

这些关键组件共同构成了WebSocket协议的基础结构,使得WebSocket成为实时通信的有力工具。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4.6 审阅与共享演示文稿

本节主要学习了审阅与共享演示文稿的方法,让用户学会审查制作好的演示文稿,并分享给其他人。 4.6.1 审阅演示文稿 当需要对其他人制作的演示文稿进行修改时,可使用添加批注功能,这样能在不改动原有幻灯片的情况下,使…

MAC修改python3命令为py

1, 找到python3安装路径 2, vi ~/.bash_profile 3, 增加内容: alias py“/usr/bin/python3” 4, 重载source ~/.bash_profile 5,执行py

onnx模型修改:将均值和方差放到模型中

训练模型时,一般都会对原始数据进行归一化再送入网络,即减均值和除方差。在部署时,我们也要进行同样的操作。有些推理框架会提供对应的接口,我们只需要设置均值和方差即可,如MNN.也有一些框架不提供这样的功能&#xf…

单元测试:优雅编写Kotlin单元测试

一、MockK简介 MockK是一款功能强大、易于使用的Kotlin mocking框架。在编写单元测试时,MockK能够帮助我们简化代码、提高测试覆盖率,并改善测试的可维护性。除了基本用法外,MockK还提供了许多额外的功能和灵活的用法,让我们能够…

剑走偏锋:非传统问题在面试中的应对策略

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

如何优雅地在windows上玩ROS(一个紧致的解决方案)

如何优雅地在windows上玩ROS(一个紧致的解决方案) - 知乎 Excerpt 前言为了节省您的时间,本文适用的OS为win10,win11;适用的ROS1版本为melodic和noetic;适用于ROS2 foxy。如果你的目标OS和ROS不在上述的范围…

雅思写作 三小时浓缩学习顾家北 笔记总结(一)

目录 饥饿网翻译100个句子记录 There are some economically deprived communities in large cities. there is no clear link between grouping student by ability and their levels of attainment. young people without tertiary education qualification normally hav…

java八股文面试[数据库]——索引的基本原理、设计原则

索引的设计原则 索引覆盖是什么: 索引(在MySQL中也叫做“键(key)”) 是存储引擎用于快速找到记录的一种数据结构。这是索引的基本功能。 索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时,索引…

成集云 | 钉钉财务费用单同步至畅捷通 | 解决方案

源系统成集云目标系统 方案介绍 财务管理作为企业管理中重要的组成部分,在企业的发展和成长中扮演着重要角色,成集云以钉钉费用单OA审批与畅捷通TCloud系统为例,与钉钉连接器深度融合,通过数据处理和字段匹配实现了费用…

【LeetCode】290. 单词规律

这里写自定义目录标题 2023-8-30 09:34:23 290. 单词规律 2023-8-30 09:34:23 这道题目,我是根据 205. 同构字符串 的思路一样,都转化为另外一个第三方的字符串,在比较翻译过后的语句是不是一样的。 class Solution {public boolean wordP…

自然语言处理的多行业应用

在我们小时候,甚至是我们会走路或说话之前,就已经在察觉周围发出的声音了。我们倾听其他人发出的声响和声音。我们将声音组合成有意义的词语,例如“母亲”和“门”,并学习解读周围人的面部表情,以加深我们对词组的理解…

火爆全网!HubSpot CRM全面集成,引爆营销业绩!

HubSpot CRM是什么?它是一款强大的客户关系管理工具,专为企业优化销售、服务和市场营销流程而设计。它在B2B行业中扮演着极为重要的角色,让我来告诉你为什么吧! HubSpot CRM不仅拥有用户友好的界面和强大的功能,还能够…

Dimensions网站——一个链接研究知识系统

Dimensions网站——一个链接研究知识系统 一、Dimensions网站简介 Dimensions 是一个链接的研究知识系统,它重新构想了发现和研究的获取。Dimensions 由 Digital Science 与全球 100 多个领先研究组织合作开发,汇集了资助、出版物、引文、替代指标、临…

城市内涝监测预警系统:构筑智慧城市的内涝防控网络

治理城市内涝事关人民群众生命财产安全,既是重大民生工程,又是重大发展工程。近年来,各地区各部门大力推进排水防涝设施建设,城市内涝治理取得积极进展,但仍存在自然调蓄空间不足、排水设施建设滞后、应急管理能力不强…

CTF学习资源

文章目录 一、buuctf靶场1、MD52、一眼解密3、Url编码4、回旋踢5、摩斯6、Password7、变异凯撒8、Quoted-printable9、Rabbit10、篱笆墙的影子11、RSA12、丢失的MD5 二、ctf题型1、PWN,Reverse1)Reverse2)pwn 2、Crypto1)古典密码学2)现代密码学 3、web4、Misc1)Rec…

下岗吧,Excel

ChatGPT的诞生使Excel公式变得过时。通过使用 ChatGPT 的代码解释器你可以做到: 分析数据创建图表 这就像用自然语言与电子表格交谈一样。我将向大家展示如何使用 ChatGPT 执行此操作并将结果导出为Excel格式: 作为示例,我将分析并创建美国…

夸克扫描王App用上了AI大模型 让扫描更清楚、提取文字更方便

对上班族来说,找到一个好用的工具类APP,绝对可以提升工作效率。比如最常见的扫描文件,公司的扫描仪虽然好用但是很难进行深度编辑且不能外出使用;很多手机App也有扫描功能,但技术能力总是差一点,当面对复杂…

Android系统-线程-java线程

引言 Android的框架应用是java环境的。java天生就是多线程。所以对java线程的理解尤为重要。 概念 线程状态转换图 NEW 初始状态 RUNNABLE 运行状态 BLOCKED 阻塞状态 WAITING 等待状态 TIME_WAITING 超时等待状态 TERMINATED 终止状态 注意:调用obj.wait(…

AI大模型的使用-用LangChain链式调用简化多步提示语

众所周知,openAI的prompt对英文比较友好,也就是英文提示它的结果会更准确,假如我们不会英文,我们把中文问题给到OpenAI,然后让它翻译成英文,并把翻译后的英文给到OpenAI,让它帮忙给出解答问题&a…

【升职加薪秘籍】我在服务监控方面的实践(9)-报警设计

大家好,我是蓝胖子,关于性能分析的视频和文章我也大大小小出了有一二十篇了,算是已经有了一个系列,之前的代码已经上传到github.com/HobbyBear/performance-analyze, 接下来这段时间我将在之前内容的基础上,结合自己在…