WebSocket 实时通信:心跳、重连与背压控制客户端示例let ws, timer, tries = 0;
function connect() {
ws = new WebSocket('wss://example.com/ws');
ws.onopen = () => { tries = 0; heartbeat(); };
ws.onmessage = (e) => { /* 处理消息 */ };
ws.onclose = () => retry();
ws.onerror = () => retry();
}
function heartbeat() {
clearInterval(timer);
timer = setInterval(() => {
if (ws.readyState === WebSocket.OPEN) {
if (ws.bufferedAmount < 1 << 20) {
ws.send(JSON.stringify({ type: 'ping' }));
}
}
}, 15000);
}
function retry() {
clearInterval(timer);
const delay = Math.min(30000, 1000 * 2 ** tries++);
setTimeout(connect, delay);
}
connect();
可靠性要点应用层心跳与 `pong` 响应基于 `bufferedAmount` 的背压控制与节流指数退避重连,设置最大延迟与尝试次数总结通过心跳、退避与背压组合,可显著提升实时系统的可用性与用户体验。

发表评论 取消回复