websocket连接后应按symbol映射更新对应单元格,添加跳动动画类并防抖清除定时器,重连时区分全量拉取与增量同步,关闭前校验readystate并监听beforeunload。

WebSocket连接建立后如何正确绑定表格单元格更新
直接把 onmessage 回调里写 document.getElementById('price-cell').innerText = data.price 是最常见错误——它无法应对多行多列的实时价格表,且没做数据校验和防抖。实际应按产品代码(如 symbol)映射到对应 <td> 元素,推荐用 <code>data-symbol="BTC-USDT" 属性定位:
- 服务端推送的数据必须带唯一标识字段,例如
{ "symbol": "ETH-USDT", "price": 3241.89, "change": -0.024 } - 前端初始化表格时,每个
<td class="price-cell" data-symbol="ETH-USDT"> 都要预设好该属性 <li>在 <code>ws.onmessage中用document.querySelector(`[data-symbol="${data.symbol}"]`)精准更新,避免全量重绘 - 对
price做格式化(保留小数位、千分位)再写入,否则原始浮点数可能显示为3241.890000000001 - 给目标
<td> 添加临时类名,如 <code>price-change-up或price-change-down - CSS 中定义:
.price-change-up { background-color: #e8f5e8; color: #2e7d32; }<br>.price-change-down { background-color: #ffebee; color: #c62828; }<br>.price-cell { transition: background-color 0.3s, color 0.3s; } - 更新完内容后立即加类,0.3 秒后用
setTimeout移除,避免连续跳动叠加样式 - 注意:如果价格变动频繁,需用
clearTimeout清掉前一个定时器,否则旧移除逻辑会干扰新动画 - 首次连接成功后,先发一次
GET /api/prices拉取全量快照,填充表格;再开启 WebSocket 监听增量更新 - 断连重连时,不重新拉全量,而是发送
{"type":"resync","seq":lastSeq}请求服务端从指定序号重推,避免漏消息 - 前端维护一个
lastUpdateMap对象,记录每个symbol最新收到的seq,用于比对重推消息是否重复或乱序 - 重连期间,已断开的单元格可加 loading 提示(如
textContent = '—'),但不要清空或置零,防止误判趋势 - 所有
ws.send()调用前必须加守卫:if (ws.readyState === WebSocket.OPEN) { ws.send(...) } - 监听
window.addEventListener('beforeunload', () => ws.close()),确保页面关闭前优雅断连 - 不要在
onclose回调里再调ws.close(),会造成递归报错 - 心跳检测建议用
setInterval发ping,但每次发之前检查ws.readyState,且间隔不宜短于 15 秒,避免被服务端限频
价格跳动动画为什么只闪一下就没了
单纯改 innerText 不会触发视觉反馈,用户感知不到变化。需要手动添加 CSS 类控制过渡效果,但不能依赖 transition 直接作用于 innerText —— 它不是可过渡属性。
WebSocket断连重连时表格状态怎么保持一致
重连成功后若直接恢复推送,旧价格可能被覆盖成过期值,造成“跳回昨天的价格”。必须区分首次加载与重连恢复两种场景。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
Chrome 控制台报错 WebSocket is already in CLOSING or CLOSED state
这个错误几乎都出现在页面卸载前未主动关闭连接,或重复调用 ws.close()。浏览器会在 beforeunload 时强制关闭,但此时 JS 可能还在试图发心跳。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










