返回博客列表

WebSocket 实时推送:SSE 降级与心跳检测

桌面应用需要实时刷新数据,WebSocket 最自然。但某些网络环境会拦截 ws 协议,所以同时实现了 SSE 作为降级方案。

WebSocket 基础

const ws = new WebSocket('wss://example.com/ws'); ws.onmessage = (event) => { const data = JSON.parse(event.data); updateUI(data); };

SSE 降级

WebSocket 连接失败时,自动切换到 SSE。SSE 基于 HTTP,穿透性更好。

const source = new EventSource('/api/sse'); source.onmessage = (event) => { const data = JSON.parse(event.data); updateUI(data); };

心跳检测

每 30 秒发送 ping,如果连续 3 次无响应,认为连接断开,触发重连。