SSE 和 WebSocket 对比
2026/7/18 9:52:57 网站建设 项目流程

SSE(Server-Sent Events,服务器推送事件)

SSE是一种服务器向客户端单向推送数据的HTML5技术。基于HTTP协议,使用简单的文本格式(通常是EventStream格式)实现服务器到客户端的实时数据流。

特点:

  • 单向通信:仅服务器 → 客户端
  • 基于HTTP/HTTPS:使用标准HTTP协议,兼容现有网络设施
  • 自动重连:浏览器内置断线重连机制
  • 简单轻量:API简单,适合推送通知、实时更新等场景
  • 文本格式:默认传输文本数据

示例代码:

// 客户端consteventSource=newEventSource('/updates');eventSource.onmessage=(event)=>{console.log('收到数据:',event.data);};// 服务器端(Node.js示例)response.writeHead(200,{'Content-Type':'text/event-stream','Cache-Control':'no-cache','Connection':'keep-alive'});response.write('data: 这是推送的消息\n\n');

WebSocket

WebSocket是一种全双工双向通信协议,建立在TCP连接之上,允许服务器和客户端同时相互发送消息。

特点:

  • 🔄双向通信:服务器 ↔ 客户端
  • 🔄独立协议:使用ws://wss://协议
  • 🔄二进制支持:可传输文本和二进制数据
  • 🔄低延迟:建立连接后开销很小
  • 🔄需要主动管理连接:需手动处理断开和重连

主要区别对比

特性SSEWebSocket
通信方向单向(服务器→客户端)双向(服务器↔客户端)
协议基础HTTP/HTTPS独立的WebSocket协议
数据格式仅文本(UTF-8)文本和二进制
自动重连✅ 内置支持❌ 需要手动实现
CORS支持需要处理CORS同源策略适用
连接开销每次请求是独立的HTTP保持长连接
浏览器兼容IE不支持(Edge支持)广泛支持(IE10+)
适用场景通知推送、实时更新聊天、游戏、实时协作

如何选择

选择 SSE 当:

  • 只需要服务器向客户端推送数据
  • 需要简单实现、利用现有HTTP基础设施
  • 希望自动处理连接恢复
  • 传输文本数据即可满足需求

选择 WebSocket 当:

  • 需要双向实时通信
  • 要传输二进制数据(如图片、音频)
  • 需要极低延迟的交互应用
  • 构建聊天、协作工具或实时游戏

实际应用场景

SSE适用:

  • 股票价格更新
  • 新闻推送
  • 社交媒体通知
  • 实时日志监控

WebSocket适用:

  • 在线聊天应用
  • 多人在线游戏
  • 实时协作工具(如文档编辑)
  • 视频会议应用

现代应用有时会结合两者:用SSE推送通知,用WebSocket处理交互通信。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询