WebSocket简介

news/2025/2/28 15:42:02/文章来源:https://www.cnblogs.com/ywtssydm/p/18531607

一、websocket简介

websocket是一种在单个TCP连接上进行全双工通信的协议。

websocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

二、背景

很多网站为了实现推送技术,所用的技术都是轮询。

轮询是在特定的时间间隔,由浏览器对客户端发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然后HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的宽带等资源。

在这种情况下,HTML5定义了websocket协议,能更好的节省服务器资源和宽带,而且能够更实时地进行通讯。

三、优点

1、控制开销

创建连接后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。

2、实时性更强

由于协议是全双工的,所以服务器可以随时主动给客户端下发数据。相对于HTTP请求需要等待客户端发起请求服务端才能响应,延迟明显更少。

3、保持连接状态

与HTTP不同的是,Websocket需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息。而HTTP请求可能需要在每个请求都携带状态信息(如身份认证等)。

4、更好的二进制支持

5、支持扩展和更好的实现压缩效果

四、原理

websocket同HTTP一样也是应用层的协议,但是它是一种双向通信协议,建立在TCP之上的。

连接过程(握手过程)

1、客户端、服务器建立TCP连接,三次握手。

这是通信的基础,传输控制层,若失败后续都不执行。

2、TCP连接成功后,客户端通过HTTP协议向服务器传送websocket支持的版本号信息。(开始前的HTTP握手)

3、服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据。

4、当收到了连接成功的消息后,通过TCP通道进行传输通信。

五、websocket和socket的关系

socket其实并不是一个协议,而是为了方便使用TCP和UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口。

socket是应用层与TCP/IP协议通信的中间软件抽象层,它是一组接口。在设计模式中,socket其实就是一个门面模式,它把复杂的TCP/IP协议隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议。

 

两台主机通信,必须通过socket连接,socket则利用TCP/IP协议建立TCP连接。TCP连接则更依靠于底层的IP协议,IP协议的连接则依赖于链路层等更低层次。

websocket则是一个典型的应用层协议。

 

来源:https://www.zhangshengrong.com/p/nDa9jWORNj/

 

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

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

相关文章

袋鼠云港口数智化解决方案发布,数智引领,加速“智变”丨2024袋鼠云秋季发布会回顾

2023年12月,交通运输部印发《关于加快智慧港口和智慧航道建设的意见》,《意见》贯穿了“3条主线”,其中最首要的主线是“数字化”,数字化是基础,必须通过数字赋能建设、生产、运营、管理、服务的全要素、全过程、全场景,将数据作为新的生产要素,方可夯实智慧港口和智慧航…

Netty 如何自动探测内存泄露的发生

本文基于 Netty 4.1.112.Final 版本进行讨论本文是 Netty 内存管理系列的最后一篇文章,在第一篇文章 《聊一聊 Netty 数据搬运工 ByteBuf 体系的设计与实现》 中,笔者以 UnpooledByteBuf 为例,从整个内存管理的外围对 ByteBuf 的整个设计体系进行了详细的拆解剖析,随后在第…

ABB机器人IRB6640驱动器维修诊断分析

ABB工业机械手IRB6640是工业自动化领域的重要设备,其伺服驱动单元作为机器人的核心部件,负责提供动力和控制机器人的运动。然而,由于长时间运行、负载变化等因素,驱动单元可能会出现故障。一、ABB工业机械手IRB6640驱动器维修与诊断分析方法1.故障代码诊断: - ABB机器人伺…

HCL AppScan Standard 10.7.0 发布下载,新增功能介绍

HCL AppScan Standard 10.7.0 (Windows) - Web 应用程序安全测试HCL AppScan Standard 10.7.0 (Windows) - Web 应用程序安全测试 HCL AppScan Standard v10 for Windows Multilingual 请访问原文链接:https://sysin.org/blog/appscan-10/ 查看最新版。原创作品,转载请保留出…

惊爆!这些项目管理神器,让你的工作效率瞬间翻倍!

你是否还在为繁琐的项目管理而头疼?是否觉得团队沟通不畅、任务分配混乱、进度跟踪困难?别担心,今天我们就为你揭秘几款项目管理工具软件,它们将彻底改变你的工作方式,让你的工作效率瞬间翻倍! 一、板栗看板板栗看板是一款以直观、易用为特点的国产项目管理软件,它采用看…

Dubbo介绍

Dubbo介绍概要Dubbo是一个高性能的Java RPC框架。它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。简单来说 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案一、面向接口的远程…

AnytimeCL:难度加大,支持任意持续学习场景的新方案 | ECCV24

来源:晓飞的算法工程笔记 公众号,转载请注明出处论文: Anytime Continual Learning for Open Vocabulary Classification论文地址:https://arxiv.org/abs/2409.08518 论文代码:https://github.com/jessemelpolio/AnytimeCL创新点在线训练时,每个批次由新训练样本和类别平衡…

纯HTML5+CSS3实现一棵自己跳舞的树

代码没有多少,也没有用到任何图片,就实现了一棵可以自己跳舞的树。文件组成就简简单单的一个html和一个csshtml部分并不是很复杂,就是一些空的div,然后加上html模板也就那么十来行代码最关键的还是css部分,也不是很多,总共一百来行但就是上面这么简简单单的两个文件可以绘…

工地违规动火作业检测系统

工地违规动火作业检测系统利用现场监控摄像头对监控范围进行烟火监测,工地违规动火作业检测系统一旦发现烟火异常情况或火灾情况,无需人工干预,系统会迅速发出预警,弥补人力巡查的不足。工地违规动火作业检测系统的应用,不仅大大提高了火灾防控的效率和精度,更在很大程度…

车辆违规掉头车祸识别告警系统

车辆违规掉头车祸识别告警系统采用人工智能技术中的机器视觉分析识别技术。 车辆违规掉头车祸识别告警系统通过现场监控摄像头对交通道路区域进行实时检测,系统能够自动识别车辆的行驶状态和轨迹,判断是否存在违规掉头行为。 车辆违规掉头车祸识别告警系统一旦检测到车辆违规…

排水口水体颜色识别系统

排水口水体颜色识别系统利用现场监控摄像头对排水口水体进行实时监测,排水口水体颜色识别系统通过机器视觉技术对水体颜色进行分析和识别。一旦发现异常颜色,系统将立即发出告警通知相关人员,以便他们能够及时处理。这种智能监测方式不仅可以提高监测效率和准确性,还能有效…

渣土车篷布未遮盖抓拍识别系统

渣土车篷布未遮盖抓拍识别系统利用现场监控摄像头对现场出入口的渣土车进行实时监测,当监测到渣土车未遮盖篷布未密封等行为时,立即抓拍告警同时将告警推送给相关管理人员。渣土车篷布未遮盖抓拍识别系统主要包括现场监控摄像头、AI分析识别模块、告警推送模块和后台管理模块…