定义了startHeartbeat函数来发送心跳消息,并通过setInterval定时执行。isHeartbeatResponse函数用于检测服务器响应是否为心跳响应。如果收到心跳响应,则继续;如果WebSocket连接关闭,则调用stopHeartbeat停止心跳。这样可以确保连接的活跃性,并且如果服务器没有在预定时间内响应,可以作出适当的处理,比如尝试重新连接。
// 创建WebSocket实例
const socket = new WebSocket('ws://your-websocket-server');
// 连接打开时执行的回调函数
socket.onopen = function(event) {
console.log('WebSocket connected');
startHeartbeat(); // 开始心跳
};
// 接收到服务器消息时执行的回调函数
socket.onmessage = function(event) {
// 如果是心跳响应,继续
if (isHeartbeatResponse(event.data)) {
console.log('Heartbeat received');
} else {
// 处理其他消息
}
};
// 连接关闭时执行的回调函数
socket.onclose = function(event) {
console.log('WebSocket closed');
stopHeartbeat(); // 停止心跳
};
// 心跳函数
function startHeartbeat() {
setInterval(function() {
socket.send('Heartbeat'); // 发送心跳消息
}, 30000); // 每30秒发送一次
}
// 检查是否是心跳响应的函数(根据实际业务逻辑定)
function isHeartbeatResponse(data) {
return data === 'Heartbeat';
}
// 停止心跳的函数
function stopHeartbeat() {
clearInterval(heartbeatInterval);
}
// 心跳间隔变量
let heartbeatInterval;