欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

WebSocket 与 SSE:实时推送技术选型对比

发表于:|最后更新:|分类:Linux与网络|阅读:1546 次

实时推送场景下,WebSocket 与 Server-Sent Events(SSE)是两种主流方案,选型需结合业务方向性与基础设施。

一、核心差异

维度 WebSocket SSE
通信方向 全双工 服务端到客户端单向
协议 独立协议(握手升级) 基于 HTTP
自动重连 需自行实现 浏览器内置
代理兼容性 部分老旧代理不支持 兼容性好
二进制支持 支持 仅文本

二、SSE 服务端示例

javascript
app.get('/events', (req, res) => {
  res.setHeader('Content-Type', 'text/event-stream');
  res.setHeader('Cache-Control', 'no-cache');
  const timer = setInterval(() => {
    res.write(`data: ${JSON.stringify({ ts: Date.now() })}\n\n`);
  }, 1000);
  req.on('close', () => clearInterval(timer));
});

若仅需服务端单向推送(如通知、日志流),SSE 更简单且天然支持断线重连;若需双向低延迟交互(如聊天、协同编辑),则选择 WebSocket。