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` 的背压控制与节流指数退避重连,设置最大延迟与尝试次数总结通过心跳、退避与背压组合,可显著提升实时系统的可用性与用户体验。

发表评论 取消回复