// 创建 WebSocket 连接
const socket = new WebSocket('ws://your-websocket-server');
// 心跳间隔(比如 30 秒)
const heartbeatInterval = 30 * 1000;
// 心跳超时(比如 60 秒)
const heartbeatTimeout = 60 * 1000;
let heartbeatIntervalId, heartbeatTimeoutId;
// 连接打开时的回调
socket.onopen = function() {
console.log('WebSocket connection established.');
// 开始心跳
startHeartbeat();
};
// 收到服务器消息的回调
socket.onmessage = function(event) {
// 如果是 ping 消息,发送 pong 消息回应
if (isPingMessage(event.data)) {
socket.send('pong');
} else {
// 处理其他消息
}
};
// 检查心跳
function startHeartbeat() {
// 定时发送 ping 消息
heartbeatIntervalId = setInterval(function() {
socket.send('ping');
// 重置心跳超时
clearTimeout(heartbeatTimeoutId);
heartbeatTimeoutId = setTimeout(function() {
console.log('Heartbeat timeout, closing the connection.');
socket.close();
}, heartbeatTimeout);
}, heartbeatInterval);
}
// 检查消息是否为 ping
function isPingMessage(message) {
return message === 'ping';
}
// 连接关闭时的回调
socket.onclose = function() {
console.log('WebSocket connection closed.');
// 清除心跳定时器
clearInterval(heartbeatIntervalId);
clearTimeout(heartbeatTimeoutId);
console.log("WebSocket 连接关闭,重新连接...");
socket = new WebSocket('ws://your-websocket-server');
};
// 处理错误
socket.onerror = function(error) {
console.error('WebSocket error:', error);
};
JS websocket 心跳
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 简介: websocket-heartbeat-js基于浏览器js原生websocket。可以定时发送socket...
- Vue页面template Vue页面js 其他js 部分截图 用途 即使通讯 消息通知 封装当前页面地址到APP...
- 1.前言 由于公司前段时间开发一个类似直播的项目,想要一端能够控制其他端的呼入呼出,开麦闭麦等操作,传统的ht...
- 前言 最近关于H5和APP的开发中使用到了webSocket,由于web/app有时候会出现网络不稳定或者服务端主...
- python websocket 安装 先来看一下,长连接调用方式: 长连接,参数介绍: 长连接关键方法: 如果不...