为什么使用WebSocket?

SpringBoot整合WebSocket服务 springboot整合websocket springboot使用websocket springboot使用websocket 仅使用 SpringBoot封装好的服务,并不是使用第三方Netty或者: 底层使用实现: 底层使用Netty实现(没有使用过,不知道具体)官方文档1官方文档2。 阅读详情


首先我们可以想到http协议有两个特点:半双工、request-response机制

http协议缺点:

http协议只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。只能使用轮询,也就是每隔一段时候,就发出一个询问,了解服务器有没有新的信息,但是轮询的效率较低,也浪费资源。

websocket特点:
  • 使用全双工通信,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息。
  • 浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
  • 与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
  • 可以发送文本,也可以发送二进制数据。
  • 以数据帧为单位进行发送。
  • 数据格式比较轻量,性能开销小,通信高效。
  • 成功握手确立 WebSocket 连接之后,通信时不再使用 HTTP 的数据帧,而采用 WebSocket 独立的数据帧。
    在这里插入图片描述
如何使用websocket?

需要使用Connection和upgrade首部字段,告知服务器通信协议发生改变,以达到握手的目的。Sec-WebSocket-Key 字段内记录着握手过程中必不可少的键值。 Sec-WebSocket-Protocol 字段内记录使用的子协议。

请求报文:

//对协议进行升级
Connection:Upgrade
//指定升级的协议为websocket
Upgrade:websocket
Sec-WebSocket-Key:shaifhsidhoishdoih==
Sec-WebSocket-Protocol:chat,superchat

响应报文:返回状态码 101 Switching Protocols 的响应。Sec-WebSocket-Accept 的字段值是由握手请求中的 SecWebSocket-Key 的字段值生成的。 成功握手确立 WebSocket 连接之后,通信时不再使用 HTTP 的数 据帧,而采用 WebSocket 独立的数据帧。

//对协议进行升级
Connection:Upgrade
//指定升级的协议为websocket
Upgrade:websocket
Sec-WebSocket-Accept:jjfsofdfgbhhvncspriwih==
Sec-WebSocket-Protocol:chat,superchat
WebSocket的基本使用 WebSocket 是一种网络协议,用于在客户端和服务器之间进行双向通信。它允许在一个单独的 TCP 连接上进行全双工通信,因此比传统的 HTTP 请求-响应模型更高效。 阅读详情

相关推荐

LK32T102 单片机 操作GPIO实现流水灯(1)

前言: LK32T10232(32位)单片机是一款专为电机控制器和数字电源开发的高性能 MCU。采Cortex-M0 内核,最高工作频率可达 72Mhz,ADC 采样速率 达 1Msps。同时具备协处理器单元可满足各种乘法、除法、移位以及各种 复杂函数运算。 LK32T102(32位)支持单电源供电,且内嵌高精度高速及低速振荡器,以及具备 多种低功耗工作模式。同时,集成了多路增强型 PWM,多通道模拟比较 器和高速运算放大器,可满足多种电机及功率控制应用,并简化系统成本。...

qq_58676187的博客 3189

为什么要使用WebSocket

随着Web应用的发展,特别是动态网页的普及,越来越多的场景需要实现数据动态刷新。在早期的时候,实现数据刷新的方式通常有如下3种:客户端定时查询(如:每隔10秒钟查询一次)是最原始也是最简单的实现数据刷新的方法,服务端不用做任何改动,只需要在客户端添加一个定时器即可。但是这种方式的缺点也很明显:大量的定时请求都是无效的,因为服务端的数据并没有更新,相应地也导致了大量的带宽浪费。

wesupport的博客 872

Zabbix安装与部署 系统环境:centos7.0

Zabbix安装与部署 系统环境:centos7.0

weixin_42485027的博客 2600

简单了解一下WebSocket

WebSocket 是一种网络通信协议,很多高级功能都需要它。

Cike___的博客 772

一种4位sar adc仿真验证

4位sar adc采用下图的电容阵列,电路如下图:所有电容的正端(也称为上极板)与比较器的反相端连接,比较器同相端接Vin,其工作过程进行大致分析见之前的文章《一种4位sar adc工作过程推导(三)》,下面对这个电路进行仿真验证。 两个参考电压VrefPV_{refP}VrefP​和VrefNV_{refN}VrefN​,V+=VinV_{+}=V_{in}V+​=Vin​,假设1116(VrefP−VrefN)+VrefN<Vin<1216(VrefP−VrefN)+VrefN\frac{

大学生视野 1955

无人驾驶--车道线检测实战(附源码)

做完项目后写了个技术小结,供自己回顾也为他人学习提供参考。 另外准备建一个无人驾驶方面的微信交流群,有兴趣的朋友可以加我微信:wxl609278502 请注明: 姓名-单位/学校 项目描述: 使用opencv实时处理车载摄像机采集的道路图像,检测当前的车道,并计算出当前车辆偏离车道中心的距离,计算当前车道的曲率。 项目代码GitHub地址:https://g...

weixin_38746685的博客 6万+

为什么要使用WebSocket:实时通信技术深度解析

本文深入分析了四种实时通信技术:WebSocket、SSE、轮询和传统Socket,重点阐述了WebSocket的优势。WebSocket作为HTML5标准,支持全双工通信,具有低延迟、高效率特点,适合聊天、金融交易等实时场景。相比之下,SSE仅支持单向推送,轮询效率低下,传统Socket则过于复杂。通过性能对比可见,WebSocket在实时性和资源消耗上表现最优。文中还提供了WebSocket Hook的实现方案,包括接口定义、配置管理和消息处理机制,展示了其在实际应用中的技术价值。WebSocket已成

overFlowzy的博客 1228

Windows10环境下激活虚拟环境报错【source : 无法将“source”项识别为 cmdlet、函数、脚本文件或可运行程序的名称】

在使用Django创建Web程序前,需要创建一个虚拟的工作环境,在使用【source ll_env/bin/activate】命令激活虚拟环境时报错:source : 无法将“source”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。所在位置 行:1 字符: 2。

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 1万+

为什么要用webSocket?

最近在接触goaccess 可视化Nginx的log,遇到一个问题: 如何在浏览器中实时展示Nginx的请求? 将access log实时输出到指定位置,其中 goaccess /usr/local/nginx/logs/access.log -o /opt/goaccess/html/out.html --real-time-html --time-format='%H:%M:%S' --date-format='%d/%b/%Y' --log-format=COMBINED --port=700

MyySophia的博客 941

目标检测基础

目标检测是计算机视觉的核心任务,需同时对图像中的物体进行定位与识别。传统方法存在速度慢、精度低等问题,而深度学习显著推动了该领域发展,使实时高精度检测成为可能。检测的核心是为每个物体预测边界框坐标和类别标签。为实现高效检测,引入了锚框机制,通过预设多尺度、多宽高比的候选区域,缩小预测偏移量,提升定位精度。训练时,通过计算锚框与真实边界框的交并比 (IoU) 确定正负样本,并基于此生成类别标签和坐标偏移量作为监督信号。该方法提升了检测器对多尺度目标和复杂场景的鲁棒性。

盼小辉丶的博客 2761

go语言实现服务器server端与客户client端即时通信(附完整源码)

go语言实现服务器server端与客户client端即时通信(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 627

websocket的简介与应用

1、为什么使用websocket 前端和后端的交互模式最常见的就是前端发数据请求,从后端拿到数据后展示到页面中。如果前端不做操作,后端不能主动向前端推送数据,这恰恰就是http协议的缺陷。但在我们平常开发中,常遇到客户端需要实时获取服务端信息,做到客户端与服务端互通有无,通过http协议实现(轮询)存在一定延时性,且会造成资源的很大浪费,websocket却能完美实现。恰巧最近有项目需求,就做了一定研究,特此记录。 2、简介 websocket是一种在单个TCP连接上进行全双工通信的协议,该协议兼容我

xi_nuo的博客 1894

数据分析之AB测试基础知识

在 A/B 测试中,零假设是两组的指标是相同的,当假设检验推断出两组指标不同,但事实上两组指标相同时,就是第一类错误。

qq_45727498的博客 561

React中使用websocket连接

React WebSocket

小蜜蜂的博客 4万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

认识WebSocket 以及怎么使用WebSocket

通信速度:WebSocket建立的连接速度较快,但是在通信过程中可能会受到网络条件的影响,需要对连接状态进行良好的监控和管理。跨域访问:由于浏览器的同源策略,WebSocket需要进行跨域访问时需要进行特殊处理,如使用代理服务器或者设置跨域访问的策略。服务器负载:WebSocket需要建立持久连接,因此服务器的负载会增加,需要根据实际需求进行服务器的规划和优化。安全性:由于WebSocket是基于TCP协议的,因此必须采取安全措施,如SSL加密,以保护数据的安全性。比如,如果想要向服务器发送数据,可以在。

weixin_48357279的博客 1461

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VUE项目如何使用WebSocket

前端vue-WebSocket连接 export default { components: { }, data() { return { websockLink: '' } }, watch: { websockLink(val) { if (val) { this.initWebSocket() }...

LETIAN_Z的博客 1059

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

websocket的使用

一、为什么需要 WebSocket? 初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起。 举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。 这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用"轮询":每隔一段时候,就发出一个询问,了解服务器有没

鸭绒的博客 9949

Vue如何使用WebSocket

websocket是基于TCP的一种双向通信协议。在此之前,一直是采用轮询的方式进行双向通信,这种方式效率低下还非常浪费资源。为了解决这种问题,websocket应运而生。1.双向通信:websocket使得客户端跟服务端之间交换数据变得更加简单。允许服务器主动向客户端推送数据。浏览器只需要和服务器完成一次握手,就可以创建持久性的连接,并进行双向数据传输。 2.实时性强: 服务器可以主动给客户端推送数据,相比http请求需要先由客户端发起请求,浏览器才会响应,延迟明显更少、时间更短。 3.连接保持:webs

weixin_45237990的博客 7169

【websocket】安装与使用

WebSocket是一种基于TCP的长连接协议,允许服务器主动向客户端推送消息,解决了传统HTTP协议轮询效率低的问题。本文介绍了WebSocket的工作原理、报文格式,以及使用websocketpp库搭建WebSocket服务器的方法。websocketpp是一个支持WebSocket和HTTP协议的C++库,主要特性包括事件驱动接口、跨平台支持和线程安全。文章详细讲解了websocketpp的常用接口如连接管理、消息处理和定时器设置等,并提供了安装命令和基础代码示例,为开发实时通信应用提供了技术方案。

fight_p的博客 2673

WebSocket使用及在vue如何使用

WebSocket WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。 现在,很多网站为

Cherry 2万+

SpringBoot使用WebSocket

SpringBoot使用WebSocket

weixin_44185837的博客 3万+

WebSocket的使用

websocket相当于一个连接客户端和服务器端的管道,可以长时间的进行保持,直到人工将管道通信关闭。它和servlet的不同之处就在于servlet进行浏览器和服务器进行数据交互时,servlet创建的通信管道需要频繁地进行创建和关闭,因为servlet中浏览器和服务器的一次通信就是一次request发送和一次response的返回,一次通信结束之后,立即关闭通道,不能持久保持。而恰恰也是web...

小火球儿 893

websocket基本使用

websocket基本使用websocket的简单介绍原生实现socket(前端后台)前端实现原生后端的实现websocketIO插件使用websocketIO前端实现socket-io后台心跳检测为什么会有心跳检测如何进行心跳检测和重连 websocket的简单介绍 websocket 是一种网络通信协议,一般用来进行实时通信会使用到(聊天室) websocket 协议和http协议类似,http协议有一个缺陷,只能由客户端发送请求,服务端根据请求url和请求的参数返回对应的结果 websocket是双向

qq_34379960的博客 1670

Vue与WebSocket的使用方法

如果是因为网络波动等原因导致的意外关闭,你可能需要实现自动重新连接的逻辑,比如在一定时间间隔后尝试重新建立连接。通过这种方式,可以更好地在整个应用中共享和管理WebSocket连接,使得代码结构更加清晰,便于维护和扩展。当出现连接错误时,会在控制台打印错误信息,你可以根据实际情况采取进一步的措施,如尝试重新连接。钩子在组件销毁之前被调用,用于关闭WebSocket连接,避免资源浪费和潜在的连接泄漏问题。在这个示例中,当接收到消息时,先将消息数据(通常是JSON格式)进行解析,然后将消息添加到。

菜狗小测试 5467
上一篇: HTTP keep-alive和TCP keepalive
下一篇: 回溯法解决排列/组合/子集问题
jf-lin
博客等级 码龄7年 37粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值