websocket心跳检测笔记

判断设备是否在线少不了检测。当然大部分人写的心跳检测会存在一个潜在的bug,比如我明明做了心跳检测,为什么设备在线的状态却检测出来为下线的状态呢?

心跳检测其实原理也很简单,写一个定时器,比如没3秒向客户端发送消息,如果客户端回复消息了则说明设备在线中,如果没有回复消息则说明客户端下线了。
别看以下代码中有关闭检测与错误检测可用来判断socket是否连接,但有一些特殊情况此监听都无法检测,比如断网的情况,卡死的情况等。 所以socket通信少不了要做心跳检测。

服务端代码如下:

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 2000 });
let clients = new Map();
wss.on('connection', function connection(ws) {ws.on('message', function incoming(message) {if(data.type == 'pong'){ // 如果客户端发送消息了则isAlive为true表示上线中ws.isAlive = true;}})
})ws.on('close', function close() { // 监听正常

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

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

相关文章

物流系统原有40T数据加上每天至少要比之前多3G数据产品,这种该怎么解决

今天早上接到一个学生的电话,说他现在有40T物流数据,且今年比去年每天至少要多3G数据,访问量也要比去年每天多1千万次。在少量增加成本或是在原有的服务器的前提下,将系统进行升级及拓展。希望我给他提供方案。 听完之后&#xff…

Ubuntu 22.04 安装 KVM

首先检查是否支持 CPU 虚拟化,现在的 CPU 都应该支持,运行下面的命令,大于0 就是支持。 egrep -c (vmx|svm) /proc/cpuinfo安装 Libvirt apt install -y qemu-kvm virt-manager libvirt-daemon-system virtinst libvirt-clients bridge-uti…

华为FreeBuds 6i戴久了会耳朵胀痛吗?该怎么办?

华为FreeBuds 6i戴久了,会有耳朵胀痛的感觉吗?其实可能是没选对适合自己的耳塞,给你们分享几个佩戴更舒服的方法,一起来看看~ 首先和大家说说为什么华为FreeBuds 6i戴久了不舒服,一方面是耳塞尺寸不合适,另…

数据结构-5.5.二叉树的存储结构

一.二叉树的顺序存储: a.完全二叉树: 1.顺序存储中利用了静态数组,空间大小有限: 2.基本操作: (i是结点编号) 1.上述图片中i所在的层次后面的公式应该把n换成i(图片里写错了); 2.上述图片判断i是否有左…

VLAN:虚拟局域网

VLAN:虚拟局域网 交换机和路由器协同工作后,将原先的一个广播域,逻辑上,切分为多个广播域。 第一步:创建VLAN [SW1]dispaly vlan 查询vlan VID(VLAN ID):用来区分和标定不同的vlan 由12位二进制构成 范围: 0-4…

@Autowired List<PayStrategy> payStrategies

在Java中&#xff0c;Autowired注解是Spring框架提供的一个强大的依赖注入工具&#xff0c;它允许自动地将Spring容器中的bean注入到类中。在您给出的代码片段中&#xff0c;Autowired被用来注入一个List< PayStrategy>类型的bean列表。这里有几个关键点需要解释&#xf…

Python中函数的使用方法

1 问题 在python的学习中&#xff0c;一个相同的程序可能会有多种不同的代码输入方式&#xff0c;那么函数这种方式是否方便快捷呢&#xff1f;今天我们来简单介绍函数的部分使用方法。 2 方法 定义函数&#xff1a;代码清单1Def function name (arguments):return result在上面…

手撕数据结构 —— 带头双向循环链表(C语言讲解)

目录 0.前言 1.什么是带头双向循环链表 理解带头 ​编辑 理解双向 理解循环 2.带头双向循环链表的实现 List.h文件中接口总览 具体实现 结点的定义 申请结点 初始化 打印链表 尾插 尾删 头插 头删 ​编辑​编辑 获取大小 查找 在指定位置前插入 ​编辑…

基于顺序表实现通讯录项目

目录 1.通讯录的基本构成 2.通讯录的底层原理 3.通讯录的底层——顺序表 ——————————————————————————————————————————— 正文开始 1. 通讯录的基本构成 1.1 联系人信息的主要内容 ●姓名 ●性别 ●年龄 ●电话 ●住址 1.2 数…

基于ABAQUS的传热学、热应力分析和有限元计算的相关概念和原理

背景 在工业产品生产和结构制造中&#xff0c;热分析往往是设计和生产不可或缺的环节&#xff0c;该方面的计算分析越来越受到工程界的重视。宏新环宇&#xff08;北京&#xff09;信息技术研究院有限公司特举办《ABAQUS热传导与热应力分析》研修班。研修班将系统地梳理传热学…

第33次CCF计算机软件能力认证-第4题十滴水

题干&#xff1a; 十滴水是一个非常经典的小游戏。 小 C C C 正在玩一个一维版本的十滴水游戏。 我们通过一个例子描述游戏的基本规则。 游戏在一个 1 c 1c 1c 的网格上进行&#xff0c;格子用整数 x ( 1 ≤ x ≤ c ) x(1≤x≤c) x(1≤x≤c) 编号&#xff0c;编号从左往…

【Flutter、H5、Web?前端个人总结】分享从业经历经验、自我规范准则,纯干货

前言 hi&#xff0c;正式接触web前端已经经过了两年的时间&#xff0c;从大学的java后端转型到web前端&#xff0c;再到后续转战Flutter&#xff0c;逐渐对前端有了一些心得体会&#xff0c;其实在当下前端的呈现形式一直在变化&#xff0c;无论你是用原生、还是web还是混编的…

初始项目托管到gitee教程,开箱即用

0.本地仓库与远程仓库关联&#xff08;需先在gitee创建仓库&#xff09; ①打开powershell生成ssh key ssh-keygen -t ed25519 -C "Gitee SSH Key"-t key 类型-C 注释 生成成功如下&#xff0c;并按下三次回车 ②查看公私钥文件 ls ~/.ssh/输出&#xff1a; id_…

如何将智合同与现有的企业管理系统进行集成?

#企业管理系统 #系统集成 #人工智能 #API接口 #安全性 #要素提取 #智能审查 #合同智能对比 随着人工智能技术的发展&#xff0c;合同智能应用赋能企业管理&#xff0c;简化企业管理流程&#xff0c;节约时间和人力成本&#xff0c;提高企业管理质量。智合同利用人工智能技…

怎么提取伴奏?5个人声分离方法一步搞定!

在进行音乐创作或混音等操作时&#xff0c;提取出音乐中的伴奏是一个常见的需求。伴奏是指音乐中除了主旋律和歌唱部分之外的音轨&#xff0c;通常包括鼓、贝斯、吉他等乐器的演奏&#xff0c;提取出伴奏可以让我们更方便地对音乐进行处理。 本文分享几个可以提取伴奏的方法&a…

el-table表头加红色星标

代码&#xff1a; <el-table-column prop"name" label"姓名" width"auto"><template #header><span style"color: red; margin-right: 4px">*</span><span>姓名</span></template></el…

Mysql—高可用集群MHA

1:什么是MHA&#xff1f; MHA&#xff08;Master High Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切…

WordPress 中使用 wp_localize_script 从 PHP 传递参数给 JavaScript

WordPress 的 wp_localize_script 函数从它名字可以看出它是用来进行前端本地化的&#xff0c;它的工作方式是加载翻译之后的文本&#xff0c;接着将它们当做一个 JavaScript 对象输出到 HTML 中&#xff0c;然后 JS 脚本就用该对象去输出对应语言的文本了。 使用 wp_localize…

22个无版权的4K高清视频素材网站,各种风格视频都有!

平时我也会做一些短视频和宣传片&#xff01; 所以&#xff0c;对找素材这回事不在话下&#xff0c;国内外也有不少高清无水印的视频素材网站&#xff0c;今天就分享一些高清剪辑必备的视频素材渠道&#xff0c;不少也是免费哒&#xff0c;平时需要找素材的同学千万不要错过啦…

解决 Django 数据库迁移报错:无法添加带有 `auto_now_add=True` 的字段20241008

解决 Django 数据库迁移报错&#xff1a;无法添加带有 auto_now_addTrue 的字段 引言 在使用 Django 进行开发时&#xff0c;数据库迁移是不可避免的一部分。然而&#xff0c;添加新字段特别是带有 auto_now_addTrue 的日期时间字段时&#xff0c;可能会遇到一些令人头疼的错…