概述WebSocket 提供持久的全双工连接,适合聊天、协作与行情推送。需要在客户端与服务端设计心跳与重连治理,避免断线与拥塞。用法/示例function connect(url) { let ws, timer, retry = 0 const setup = () => { ws = new WebSocket(url) ws.binaryType = 'arraybuffer' ws.onopen = () => { retry = 0; timer = setInterval(() => ws.send(JSON.stringify({ t: 'ping' })), 30000) } ws.onmessage = e => { const data = typeof e.data === 'string' ? JSON.parse(e.data) : new Uint8Array(e.data) } ws.onclose = () => { clearInterval(timer); const backoff = Math.min(1000 * 2 ** retry, 30000); retry++; setTimeout(setup, backoff) } ws.onerror = () => ws.close() } setup() } 工程建议心跳与超时:定期 ping 并在超时断开重连;服务端响应 pong 并记录延迟。退避重连:指数退避并设最大上限,避免雪崩;区分网络错误与服务端拒绝。帧选择:按场景选择文本或二进制并定义协议;限制消息大小与频率。参考与验证MDN:WebSocket — https://developer.mozilla.org/docs/Web/API/WebSocketRFC 6455:The WebSocket Protocol — https://www.rfc-editor.org/rfc/rfc6455

发表评论 取消回复