WebSocket心跳机制(笔记大全)
一、WebSocket心跳机制前端
前端实现WebSocket心跳机制的方式主要有两种:
- 使用setInterval定时发送心跳包。
- 在前端监听到WebSocket的onclose()事件时,重新创建WebSocket连接。
第一种方式会对服务器造成很大的压力,因为即使WebSocket连接正常,也要定时发送心跳包,从而消耗服务器资源。第二种方式虽然减轻了服务器的负担,但是在重连时可能会丢失一些数据。
二、WebSocket心跳包机制
WebSocket心跳包是WebSocket协议的保活机制,用于维持长连接。有效的心跳包可以防止长时间不通讯时,WebSocket自动断开连接。
心跳包是指在一定时间间隔内,WebSocket发送的空数据包。常见的WebSocket心跳包机制如下:
- 客户端定时向服务器发送心跳数据包,以保持长连接。
- 服务器定时向客户端发送心跳数据包,以检测客户端连接是否正常。
- 双向发送心跳数据包。
三、WebSocket心跳机制原理
WebSocket心跳机制的原理是利用心跳包及时发送和接收数据,保证WebSocket长连接不被断开。WebSocket心跳机制的原理可以用下面的流程来说明:
- 客户端建立WebSocket连接。
- 客户端向服务器发送心跳数据包,服务器接收并返回一个表示接收到心跳数据包的响应。
- 当服务器没有及时接收到客户端发送的心跳数据包时,服务器会发送一个关闭连接的请求。
- 服务器定时向客户端发送心跳数据包,客户端接收并返回一个表示接收到心跳数据包的响应。
- 当客户端没有及时接收到服务器发送的心跳数据包时,客户端会重新连接WebSocket。
四、WebSocket心跳机制必要吗
WebSocket心跳机制是必要的,它可以使WebSocket连接保持长连接,避免断开连接的情况发生。同时,心跳机制也可以检查WebSocket连接的状态,及时处理异常情况。
五、WebSocket心跳机制作用
WebSocket心跳机制的作用主要有以下几点:
- 保持WebSocket连接不被断开。
- 检测WebSocket连接状态,及时处理异常情况。
- 减少WebSocket连接及服务器资源的消耗。
六、WebSocket需要心跳吗
WebSocket需要心跳,因为WebSocket连接可能会因为长时间没有数据传输而被断开,而心跳机制可以及时检测连接状态,保持WebSocket长连接。
七、Spring WebSocket心跳机制
Spring WebSocket提供了心跳机制的相关配置,可以通过以下两种方式实现:
- 使用PingMessage和PongMessage类的方式实现WebSocket心跳机制。
- 通过配置HeartbeatHandler来实现WebSocket心跳机制。
使用PingMessage和PongMessage类的方式实现WebSocket心跳机制较为简单,只需要在发送PingMessage时设置检测时间间隔即可。配置HeartbeatHandler相对更加灵活,可以自定义检测时间间隔和检测内容。
八、WebSocket重连机制
WebSocket在发送和接收数据时,可能会因为网络原因、服务器宕机等因素而断开连接,此时需要使用WebSocket重连机制进行重新连接。
WebSocket重连机制可以通过以下几种方式实现:
- 前端监听WebSocket的onclose()事件,重新创建WebSocket连接。
- 使用WebSocket插件或库,例如Sockjs、Stompjs等。
- 使用心跳机制检测WebSocket连接状态,自动重连。
- 使用断线重连插件或库,例如ReconnectingWebSocket等。
九、WebSocket的缺点和不足
WebSocket的缺点和不足主要有以下几点:
- WebSocket需要浏览器和服务器端都支持该协议。
- WebSocket会增加服务器的负担,不适合大规模连接的应用场景。
- WebSocket不能像HTTP那样传输文本和二进制数据。
十、WebSocket心跳重连代码示例
下面是WebSocket心跳重连代码示例:
//创建WebSocket连接
var ws = new WebSocket("ws://localhost:8080/");//心跳包内容
var heartBeat = {type: "ping",timestamp: new Date().getTime()
}//定时发送心跳包
setInterval(function() {ws.send(JSON.stringify(heartBeat));
}, 30000);//监听WebSocket连接关闭事件,重新连接
ws.onclose = function() {console.log("WebSocket连接关闭,重新连接...");ws = new WebSocket("ws://localhost:8080/");
}
相关文章:
WebSocket心跳机制(笔记大全)
一、WebSocket心跳机制前端 前端实现WebSocket心跳机制的方式主要有两种: 使用setInterval定时发送心跳包。在前端监听到WebSocket的onclose()事件时,重新创建WebSocket连接。 第一种方式会对服务器造成很大的压力,因为即使WebSocket连接正…...
Spring Boot日志:SLF4J和Logback
日志的分类 SpringBoot中的日志库分为两种: 实现库:提供具体的日志实现,例如日志级别的控制、打印格式、输出目标等。外观库:自身不提供日志实现,而是对其他日志库进行封装,从而方便使用。基于外观模式实…...
[C++] C++入门第二篇 -- 引用 -- 内联函数inline -- auto+for
目录 1、引用 -- & 1.1 引用的概念 1.2 引用特性 1.3 常引用 -- 权限问题 1.4 引用的使用场景 1.4.1 做参数 1.4.2 做返回值 注意 1.5 传值、传引用的效率比较 1.6 引用和指针的区别 2、内联函数 2.1 概念 转存失败重新上传取消编辑转存失败重新上传取消编…...
Latex | 将MATLAB图并导入Latex中的方法
一、问题描述 用Latex时写paper时,要导入MATLAB生成的图进去 二、解决思路 (1)在MATLAB生成图片的窗口中,导出.eps矢量图 (2)把图上传到overleaf的目录 (3)在文中添加相应代码 三…...
JSON格式Python,Java,PHP等封装根据关键词搜索获取淘宝商品列表数据API
淘宝是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要用关键词搜索获取淘宝天猫商品列表,您可以通过开放平台的接口或者直接访问淘宝天猫商城的网页来获取商品列表详细信息。以下是两种常用方法的介绍&a…...
MySQL MHA高可用配置及故障切换
文章目录 一.MySQL MHA1.什么是MHA2.MHA的组成2.1MHA Node (数据节点)2.2MHA Manager (管理节点) 3.MHA的特点4.…...
PHP8知识详解:PHP8开发工具VS Code的安装
作为PHP8的开发工具有很多,具有IDE功能的有phpstorm、Visual Studio Code、Sublime Text、NetBeans、Eclipse、Codelobster、PHP Designer等,当然还有很多轻量的工具,比如Notepad、Editplus等。本文给你介绍的是万能编辑器Visual Studio Code…...
Sui Move与标准Move的有哪些区别和根本性创新
Sui网络将Sui Move作为其本地编程语言,使用Sui Move编写的apps利用Sui的共识机制,实现了令人印象深刻的交易性能。 然而,熟悉Move编程语言的开发者在探索Sui文档时可能会感到困惑,因为该文档着重介绍了对象和一些指令,…...
构建自己的ChatGPT:从零开始构建个性化语言模型
🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~ἳ…...
【react】react18的学习(十二)– 底层原理(二)之 迭代器 iterator
迭代器iterator 是一种 ES6 规范,具有这种机制的数据结构才可以使用for of循环:返回每一项的值; 原型链具有Symbol.iterator属性的数据结构都具备;如数组、部分类数组、字符串等; 普通对象就不能用; for-…...
一遍过JavaSE基础知识
文章目录 前言安装Java Development Kit (JDK)安装jdk配置开发环境验证是否安装配置成功 编写第一个Java程序hello world运行Java程序的流程 数据类型和变量数据类型变量 程序逻辑控制条件语句循环语句跳转语句 数组声明和创建数组访问数组元素数组长度遍历数组多维数组 面向对…...
【云原生】Kubernetes之ConfigMap
ConfigMap ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件 ConfigMap 将你的环境配置信息和 容器镜像 解耦,便于应用配置的修改 说明:…...
8.python设计模式【组合模式】
内容:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。角色: 抽象组建(component)叶子组建(Leaf)复合组建(Composite)客户端 (Client) UML 图 举个例子 需求…...
tkinter制作任意图形窗口
import tkinter from PIL import Image, ImageTkdog tkinter.Tk() # 设置图片描绘的坐标,注意乘号是字母x dog.geometry(500x500200100) # 不允许修改大小 dog.resizable(False, False) # 不显示标题栏 dog.overrideredirect(True) # 设置白色透明色,这…...
视频监控综合管理平台EasyCVR多分屏默认播放协议的配置优化
视频监控综合管理平台EasyCVR具备视频融合汇聚能力,TSINGSEE青犀视频平台基于云边端一体化架构,可支持多协议、多类型设备接入,包括:NVR、IPC、视频编码器、无人机、车载设备、智能手持终端、移动执法仪等。国标GB28181视频平台Ea…...
2023杭电多校第三场 1012.Noblesse Code
传送门:Vjudge 前题提要:一道挺有意思的数论题.赛时对于这道题没什么想法,但是赛后细品之后其实感觉也就那么一回事.但是这种 更相损减术与辗转相除法 相转化的题目还是有点典的,需要好好消化一下. 首先看完题目.我们需要考虑的是 ( A , B ) (A,B) (A,B)与 ( a , b ) (a,b) (…...
ubuntu qt 环境变量配置
ubuntu设置qt环境变量 qt 安装路径为:/home/ljn/Qt5.12 包含bin等目录的路经:/home/ljn/Qt5.14.2/5.14.2/gcc_64 环境变量配置 打开配置文件: sudo gedit /etc/profile在底部添加: export PATH"/home/ljn/Qt5.14.2/Tool…...
按照Vue写WPF(0):功能实现
文章目录 前言VUE具有的功能如何专业到WPF上面 前言 我最近学了WPF之后我终于知道为什么WPF学习曲线那么陡峭了。因为WPF没有组件化的思想,或者说没有按照Vue一样去模板化开发。 为什么我推荐Vue的想法呢。因为Vue最大的特点就是模板化,让Vue工程师去写…...
vb+ACCESS教师管理系统设计设计与实现
--------------前言-------------- 教师管理系统是一个企事业单位不可缺少的部分,它的内容对于企事业单位的决策者和管理者来说都至关重要,所以教师管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件信息,这种管理方式存在…...
C++笔记之对指针类型的变量进行+1操作
C笔记之对指针类型的变量进行1操作 在C中,对指针类型的变量进行"1"操作会根据指针的数据类型而有所不同。这涉及到指针的算术运算,C中的指针算术运算是根据指针所指向的数据类型的大小来进行的。 code review! 文章目录 C笔记之对指针类型的…...
新手福音:通过快马平台调用codex,用自然语言学写计算器代码
作为一个刚接触编程的新手,我最近发现了一个特别友好的学习方式——通过自然语言描述让AI帮我生成代码。这次我想做一个简单的网页计算器,在InsCode(快马)平台上体验了一把用codex模型生成代码的过程,收获很大。下面分享我的学习笔记…...
Shell脚本初级测试题
文章目录一、 填空题 (共10题)二、 选择题 (共10题,单选)以下是为Shell脚本初学者设计的20道练习题,涵盖填空和选择两种题型,所有题目均基于您提供的【文档内容】。一、 填空题 (共10题) Shell脚本是解释型程序,其本质是将需要执…...
西门子S7-1200的PID三兄弟:PID_Compact、PID_3Step、PID_Temp到底该怎么选?看完这篇不再纠结
西门子S7-1200 PID三兄弟实战选型指南:从原理到场景化决策 在工业自动化领域,温度、压力和流量等过程变量的精确控制始终是核心挑战。西门子S7-1200 PLC提供的三种PID控制指令——PID_Compact、PID_3Step和PID_Temp,就像三位各有所长的技术专…...
还在手动拖动进度条整理长视频总结?2026年这4款AI视频总结工具,3分钟搞定1小时长片
我做内容创作快五年,光整理音视频素材这块,踩过的坑能绕办公桌三圈。之前天天手动拖进度条截重点,一小时长视频整理完大半天就没了。测了市面上十多款热门AI视频总结工具,我可以直接给结论:听脑AI是同类工具中最值得用…...
弃投《Nature Communications》转投它?这些期刊正在让这批科研人弯道超车!
《Science Advances》影响因子分区自引率12.5JCR Q1 / 综合1区 1.6%研究方向:多学科综合、自然科学与工程期刊亮点:AAAS顶刊,年发文约2000篇,国人占比约30%,审稿3-5个月,OA发表,是各学科冲一区顶…...
本科生毕业论文必备:2026年这几款工具从开题到答辩全覆盖
基于2026年最新实测数据,从学术严谨性、降重效果、AIGC合规性等维度,为你筛选出综合实力最强的论文写作工具。 一、综合实力TOP 10榜单 排名工具名称核心定位综合评分价格一句话总结🥇1毕业之家全流程学术管家9.4/101.2元/千字起真实文献三级…...
Windows 11性能诊断与优化实战:如何用Win11Debloat让系统提速60%
Windows 11性能诊断与优化实战:如何用Win11Debloat让系统提速60% 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declut…...
PicoCTF - 2020 Mini-Competition - Web Gauntlet(关卡1)
博主开始学习CTF并做记录,本人是一名初级渗透测试工程师,水平初级很一般。阅读书籍为异步图书的《CTF快速上手 PicoCTF真题解析》Web篇 ,李华峰著书这是第一本简单解析一下真题:Web Gauntlet(关卡)该题说明…...
BIOS 里 UEFI 呈灰色改不了?一招调整硬盘模式,轻松解锁引导设置
装系统或调试电脑时,不少人会遇到 BIOS 中 UEFI 引导模式呈灰色、无法切换为传统 Legacy 模式的问题,即便关闭了安全启动、恢复 OS 默认值,依旧无法修改,导致没法按需求选择引导方式,装系统、调试硬件的操作直接卡壳。…...
JBoltAI框架4.2版本更新:Java开发者的AI新利器
近日,JBoltAI框架发布了V4.2版本,为Java开发企业和团队带来了一系列实用且强大的新功能。这一版本在保持原有架构优势的基础上,进一步拓展了AI应用的可能性,让Java开发者能够更轻松地构建智能化的企业应用。一、多模态交互升级V4.…...
