自学内容网 自学内容网

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() { // 监听正常

原文地址:https://blog.csdn.net/guige8888811/article/details/142819072

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!