为什么使用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 请求-响应模型更高效。 阅读详情

相关推荐

SAP中MRP运行计划行超限问题的分析与解决

SAP中基于生产性物料的采购特点,通常会采用采购计划协议的方式进行采购。其具体的采购计划通常来自于成品计划独立需求,然后通过物料清单,经由MRP跑出。 在采购计划协议中的计划行中,存在一个计划行号,随着MRP在不断跑出新的计划行,该行号资源会消耗完。当计划行号消耗完后,MRP不会再跑出新的计划行。且在MD04或MD02中看不到类似提示信息。此时可以通过MD05来查看是否出现类似下图的提示信息。 ...

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 3845

为什么要使用WebSocket

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

wesupport的博客 872

PYTHON 打印三角形大全

用PYTHON语言打印各种三角形

世上无难事,只要肯攀登 1万+

简单了解一下WebSocket

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

Cike___的博客 772

自研半导体Fab缺陷分析系统:从Klarf解析到Defect Map可视化的实战替代方案

本文分享了自研半导体Fab缺陷分析系统的实战经验,重点解析了Klarf文件格式与坐标系转换的核心技术,并详细介绍了从数据解析到Defect Map可视化的完整实现路径。该系统旨在为成本敏感或追求技术自主的团队提供一套功能完备的Klarity Defect平替方案,有效降低对昂贵商业软件的依赖,实现缺陷数据的自主分析与可视化。

y7z8a的博客 711

从 Token 到 Agent:一文串起 AI 大模型核心概念

摘要:本文系统解析了现代AI系统的八大核心概念:Token(语言处理的最小单位)、Context(AI的短期记忆)、Prompt(指令接口)、Tool(能力扩展器)、MCP(工具生态协议)、Agent(自主智能体)和AgentSkill(专业技能封装)。文章揭示了这些概念如何共同构成AI从基础语言理解到自主决策的技术脉络,重点阐述了Token对计算成本的影响、Prompt工程的重要性、Tool如何突破AI的能力边界,以及Agent如何通过"感知-规划-执行-反思"循环完成复杂任务。最后指

jundao1997的专栏 251

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

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

overFlowzy的博客 1228

OpenClaw 保姆级 window部署

OpenClaw 保姆级 window部署 养龙虾

cs821984831的博客 298

为什么要用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

2025.05.30【转录组】|Ribo-seq数据流程详解(一 质量控制)

本文详细介绍了Ribo-seq数据的质控分析流程,重点讲解了使用fastp进行原始数据质控的关键步骤和参数设置。作者通过Snakemake自动化流程示例,展示了如何去除接头序列、过滤低质量reads、生成质控报告等操作。文章强调高质量的Ribo-seq数据对转录后调控和翻译动态研究的重要性,并提供了兼顾数据质量和下游分析需求的参数配置建议。该流程有助于研究人员规范高效地完成Ribo-seq数据质控,为后续分析提供可靠数据基础。

785

YOLOv8改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进

1️⃣本专栏已更新150多种不同的改进方法,所使用并改进的每一个模块均包含详细的模块分析、原理讲解、个人总结、多种改进方式以及完整的修改流程,所有改进100%可直接运行。2️⃣所有改进点均为近三年顶会,顶刊提出的先进算法,将其融入到中,紧跟学术热点,适应不同的任务场景。3️⃣团队内发表数篇SCI论文,熟悉完整的发表流程,订阅专栏即可进群享受模型训练、模型改进、论文写作、投稿选刊,从入门到论文的各种答疑内容。4️⃣专栏内容会持续更新,最近更新时间:2024-12-24。项目介绍在大家购买专栏后,加入学

Limiiiing的博客 1万+

websocket的简介与应用

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

xi_nuo的博客 1894

Python re库【正则表达式操作库】全面讲解及代码示例

以下是Pythonre库的全面讲解,包含主要功能、常用方法及代码示例。完整代码和注释附后。正则表达式(Regular Expression)是用于匹配、查找、替换字符串的工具,通过特定语法定义模式。?{n}[...][a-z]A|B\d[0-9]\D\s\S\w\Wre从字符串匹配模式,返回Match对象或None。在字符串中第一个匹配项,返回Match对象或None。返回所有匹配项的。返回所有匹配项的Match对象)。替换匹配项,返回新字符串。根据模式分割字符串,返回列表。通过。

记录点滴 1162

React中使用websocket连接

React WebSocket

小蜜蜂的博客 4万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

认识WebSocket 以及怎么使用WebSocket

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

weixin_48357279的博客 1461

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VUE项目如何使用WebSocket

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

LETIAN_Z的博客 1059

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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、付费专栏及课程。

余额充值