当前位置: 首页 > wzjs >正文

浙江城乡建设部网站首页黄冈网站推广软件下载

浙江城乡建设部网站首页,黄冈网站推广软件下载,学做网站后台开发,wordpress文章首页不展开在 Node.js 中使用 TCP Socket 实现心跳机制(Heartbeat)的核心目的是检测连接是否存活,避免因网络波动或客户端异常断开导致的"僵尸连接"。以下是详细实现步骤及代码示例: 1. **基本原理 心跳机制:服务端定…

在 Node.js 中使用 TCP Socket 实现心跳机制(Heartbeat)的核心目的是检测连接是否存活,避免因网络波动或客户端异常断开导致的"僵尸连接"。以下是详细实现步骤及代码示例:


1. **基本原理

  • 心跳机制:服务端定期向客户端发送探测消息(如 ping),客户端需响应 pong
  • 超时检测:若在指定时间内未收到响应,判定连接失效并主动关闭。
  • 重置计时器:每次正常通信(收到数据或心跳响应)时,重置超时检测。

2. 服务端实现(使用 net 模块)

const net = require('net');// 创建 TCP 服务器
const server = net.createServer((socket) => {console.log('Client connected:', socket.remoteAddress);// 初始化心跳配置const HEARTBEAT_INTERVAL = 3000; // 3秒发送一次心跳const HEARTBEAT_TIMEOUT = 10000; // 10秒未响应则断开let heartbeatTimer = null;let timeoutTimer = null;// 发送心跳包const sendHeartbeat = () => {if (socket.writable) {socket.write('ping'); // 发送心跳标识console.log('Sent ping to client');}};// 启动心跳定时器const startHeartbeat = () => {heartbeatTimer = setInterval(sendHeartbeat, HEARTBEAT_INTERVAL);resetTimeout();};// 重置超时检测const resetTimeout = () => {if (timeoutTimer) clearTimeout(timeoutTimer);timeoutTimer = setTimeout(() => {console.log('Client timeout, closing connection');socket.destroy(); // 强制关闭连接}, HEARTBEAT_TIMEOUT);};// 监听客户端数据socket.on('data', (data) => {const message = data.toString();if (message === 'pong') {console.log('Received pong from client');resetTimeout(); // 收到响应,重置超时检测} else {console.log('Received data:', message);// 处理业务逻辑...}});// 启动心跳机制startHeartbeat();// 监听连接关闭socket.on('close', () => {console.log('Client disconnected');clearInterval(heartbeatTimer);clearTimeout(timeoutTimer);});// 错误处理socket.on('error', (err) => {console.error('Socket error:', err.message);});
});server.listen(3000, () => {console.log('Server listening on port 3000');
});

3. 客户端实现(Node.js 客户端示例)

const net = require('net');// 连接到服务端
const client = net.createConnection({ port: 3000 }, () => {console.log('Connected to server');
});// 监听服务端数据
client.on('data', (data) => {const message = data.toString();if (message === 'ping') {console.log('Received ping from server');client.write('pong'); // 响应心跳} else {console.log('Received data:', message);// 处理业务逻辑...}
});// 监听连接关闭
client.on('close', () => {console.log('Connection closed');
});// 错误处理
client.on('error', (err) => {console.error('Connection error:', err.message);
});

4. 关键逻辑说明

  1. 心跳发送

    • 服务端每隔 HEARTBEAT_INTERVAL(如 3 秒)发送 ping
    • 客户端需响应 pong,否则服务端会触发超时关闭。
  2. 超时检测

    • 每次发送心跳或收到正常数据时,重置超时计时器。
    • HEARTBEAT_TIMEOUT(如 10 秒)内未收到响应,判定连接失效。
  3. 资源清理

    • 连接关闭时,清除所有定时器(clearIntervalclearTimeout)。

5. 优化建议

  • 协议设计:使用固定格式(如 HEARTBEAT|pong)区分心跳与业务数据。
  • 重连机制:客户端检测到连接关闭后,可自动重连。
  • 动态配置:根据网络状况动态调整心跳间隔和超时时间。
  • TCP Keep-Alive:可结合系统级 Keep-Alive(需手动启用):
    socket.setKeepAlive(true, 60000); // 1分钟无活动发送探测包
    

6. 测试验证

  1. 启动服务端和客户端。
  2. 观察控制台日志,确认心跳正常(pingpong 交替出现)。
  3. 手动断开客户端网络,服务端应在 10 秒后检测到超时并关闭连接。

总结

通过应用层心跳机制,可以有效检测 TCP 连接的存活性,避免因意外断开导致的资源泄漏。实际项目中可根据需求调整心跳间隔和超时阈值,并结合业务逻辑完善错误处理。


文章转载自:

http://lFi35RQP.nqLnd.cn
http://oQcuM5pz.nqLnd.cn
http://z3byHaI8.nqLnd.cn
http://XT99g0fp.nqLnd.cn
http://ebLebj0O.nqLnd.cn
http://lYLnJ1W9.nqLnd.cn
http://IUmvYAvx.nqLnd.cn
http://FuMSgpmn.nqLnd.cn
http://LIle52Yl.nqLnd.cn
http://4fTIH95d.nqLnd.cn
http://aE0HJW6N.nqLnd.cn
http://bcvpHLpM.nqLnd.cn
http://wI74dmeh.nqLnd.cn
http://V3uaT63O.nqLnd.cn
http://3IWWQtSy.nqLnd.cn
http://JTkSaQNz.nqLnd.cn
http://EmnLZmMm.nqLnd.cn
http://wc0QZstm.nqLnd.cn
http://Ph7weqBh.nqLnd.cn
http://4PCQmrJW.nqLnd.cn
http://070S3CvF.nqLnd.cn
http://gtn8az2i.nqLnd.cn
http://ijo1Rrd1.nqLnd.cn
http://OeWvCbrB.nqLnd.cn
http://Qr2bk6fz.nqLnd.cn
http://PQP4vRZH.nqLnd.cn
http://RfC0z4DR.nqLnd.cn
http://SNC2Cvi8.nqLnd.cn
http://CSMdgI1V.nqLnd.cn
http://lRrjJ1If.nqLnd.cn
http://www.dtcms.com/wzjs/735481.html

相关文章:

  • 吉林省软环境建设网站专业做网站推广
  • 网页设计与网站建设在线考试1怎么做自动下单网站
  • 柬埔寨做网站网站wordpress碎语插件
  • 中国开发网站的公司语言网站开发企业
  • 完全菜鸟七天学会建网站网页设计与制作实训总结报告
  • 百度站长平台申请提交链接线上小程序制作
  • 做网站一般用什么程序宜宾市规划建设局网站
  • 网站制作应该选什么wordpress注册没有反应
  • 深圳品牌设计公司哪家好seo排名优化怎么样
  • 试客类网站开发wordpress添加og标签
  • 外贸做那种网站如何建设wap网站
  • 怎么做网站跟域名东南亚营销型网站建设与网络推广
  • 产权交易中心网站建设的原因网站论坛做斑竹
  • 中文网站做google广告怎么样搜索引擎优化步骤
  • 搭建网站 程序临沂网站建设方案服务
  • 优秀网站设计书籍商务网站建设论文答辩ppt
  • 湖南营销型网站建设 A磐石网络小制作手工废物利用
  • 专门做电子书的网站wordpress 函数 chm
  • 网站建设公司咨询电话高级网站开发工程师工资
  • 网站网站做维护二维码生成器在线生成
  • 响应式单页网站模板朝阳百姓网
  • 用新浪云做网站中国3.15诚信建设联盟网站
  • 手机网站建设方法seo搜索引擎优化试题及答案
  • 微网站免费平台h5企业网站定制排名
  • 校园网站规划与建设心得网站开发速成班
  • 企业网站建设的开发方式想学编程去哪里找培训班
  • 图片上传网站源码那个网站做排列五头比较准
  • 网站建设新闻发布注意事项磐安县建设局网站
  • 手机怎么制作网站教程wordpress注册表格
  • 电影网站源码怎么做的怎样做网站后台优化