使用前端代码描述websocket心跳重连机制
时间: 2024-01-10 09:13:34 浏览: 158
前端代码描述websocket心跳重连机制的基本思路如下:
1. 建立WebSocket连接时,设置一个心跳包发送时间间隔(比如30秒),同时记录上一次发送心跳包的时间戳。
2. 定时检查上一次发送心跳包的时间戳,如果当前时间距离上一次发送心跳包的时间超过了心跳包发送时间间隔,则发送一个心跳包给服务器。
3. 如果在一定时间内(比如5秒)没有收到服务器的响应,则认为连接已经断开,开始尝试重新连接。
4. 在重新连接时,需要设置一个重连时间间隔(比如5秒),即每隔5秒尝试一次连接,直到连接成功或达到最大重连次数(比如3次)为止。
5. 如果连接成功,则重新开始心跳检测和发送。
以下是一个简单的WebSocket心跳重连示例代码:
```
let ws = null;
let heartBeatTimer = null;
let reconnectTimer = null;
let maxReconnectTimes = 3; // 最大重连次数
let reconnectCount = 0; // 当前重连次数
function connectWebSocket() {
ws = new WebSocket('wss://example.com');
ws.onopen = function() {
console.log('WebSocket connected');
startHeartBeat();
reconnectCount = 0;
};
ws.onmessage = function(event) {
console.log('Received message: ' + event.data);
};
ws.onclose = function(event) {
console.log('WebSocket closed with code ' + event.code + ', reason: ' + event.reason);
stopHeartBeat();
if (reconnectCount < maxReconnectTimes) {
reconnectTimer = setTimeout(function() {
console.log('Reconnecting...');
reconnectCount++;
connectWebSocket();
}, 5000);
}
};
ws.onerror = function(event) {
console.log('WebSocket error: ' + event);
};
}
function startHeartBeat() {
heartBeatTimer = setInterval(function() {
ws.send('ping');
console.log('Sent heart beat');
}, 30000);
}
function stopHeartBeat() {
clearInterval(heartBeatTimer);
}
connectWebSocket();
```
阅读全文