
一句话承诺:用图与代码,快速实现心跳保活与指数退避重连。

let ws, timer, retry=0;
function connect(){
ws = new WebSocket('wss://example.com/ws');
ws.onopen = ()=>{ retry=0; timer = setInterval(()=>ws.send('PING'), 10000); };
ws.onmessage = e=>{ if(e.data==='PONG'){ /* ok */ } };
ws.onclose = ()=>{ clearInterval(timer); setTimeout(connect, Math.min(30000, 1000 * 2 ** retry++)); };
ws.onerror = ()=> ws.close();
}
connect();项目 | 建议 | 说明 |
|---|---|---|
心跳间隔 | 10-30s | 根据服务端限制 |
退避策略 | 指数退避 | 上限30s |
超时策略 | 无pong则重连 | 保活 |
OAuth2 授权码流程:简版时序与接口示例(图+代码)。