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

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部