HTTP , Websocket 和SSE三者的区别
HTTP,SSE 和WebSocket都是网络传输的协议。
SSE(Server-Sent Events) 是什么?
SSE(Server-Sent Events),服务器发送事件, 是一种基于 HTTP 的轻量级协议,允许服务器主动向客户端(如浏览器)推送实时数据。它设计用于单向通信(服务器到客户端),适用于需要实时更新但无需客户端频繁发送数据的场景(如新闻推送、股票行情、实时日志等)。
SSE的核心特性
- 单向通信:仅支持服务器向客户端推送数据。
- 基于 HTTP:直接复用 HTTP 协议,无需额外协议或端口。
- 长连接:客户端通过一个持久的 HTTP 连接接收数据流。
- 自动重连:内置重连机制,连接中断后客户端会自动尝试恢复。
- 简单 API:浏览器端通过 EventSource API 实现,代码简洁。
HTTP/HTTPs的回顾
HTTP 是一种应用层协议,用于在客户端(如浏览器)和服务器之间传输超文本(如网页、图片、API 数据等)。它是万维网(World Wide Web)的基础协议,支持现代 Web 应用的核心通信。
HTTP 的核心特性
- 无状态协议
HTTP 默认不保存客户端与服务器之间的交互状态(如登录信息)。
解决方案:通过 Cookie、Session 或 Token 实现状态管理。 - 请求-响应模型
● 客户端发送 HTTP 请求(Request)到服务器。
● 服务器返回 HTTP 响应(Response)。
● 典型的单向通信(客户端主动发起)。 - 可扩展性
● 通过 头部字段(Headers) 扩展功能(如认证、缓存控制、内容协商)。
● 支持多种内容类型(JSON、XML、HTML 等)。 - 基于文本(HTTP/1.x)或二进制(HTTP/2+)
● HTTP/1.x 的报文是明文(人类可读)。
● HTTP/2+ 使用二进制分帧,提升传输效率。
HTTPS 是 HTTP 的安全版本,通过 SSL/TLS 协议 加密传输数据。

SSE 与 HTTP 的关系和区别
关系:
- 基于 HTTP:SSE 完全构建在 HTTP 协议之上,使用标准的 HTTP 请求和响应头。
- 兼容性:SSE 利用 HTTP 的 Content-Type: text/event-stream 标识事件流,与现有 HTTP 基础设施(如代理、防火墙)兼容。
- 长轮询替代方案:相比传统轮询(频繁 HTTP 请求),SSE 通过单次长连接实现高效推送。
区别:

WebSocket协议
WebSocket 是一种基于 TCP 的全双工通信协议,允许客户端(如浏览器)与服务器建立持久性连接,实现双向实时数据传输。它突破了 HTTP 的“请求-响应”单向模式,适用于需要高频交互的场景(如聊天、在线游戏、实时协作工具)。
WebSocket 的核心特性
- 全双工通信
● 客户端和服务器可以同时发送和接收数据,无需等待对方响应。 - 低延迟
● 基于长连接,避免了 HTTP 的频繁握手开销。 - 轻量级协议
● 数据帧头较小(2~14 字节),传输效率高。 - 兼容 HTTP 基础设施
● 通过 HTTP 升级机制建立连接,默认使用 ws://(明文)或 wss://(加密)协议。 - 支持二进制和文本数据
● 可传输 JSON、二进制文件(如图片、音频)等任意格式。
对比与总结

适用场景:
● 需要服务器主动推送单向数据(如新闻推送、实时监控):
→ SSE(优先)或 HTTP 长轮询(兼容旧浏览器)。
● 需要双向高频交互(如聊天、游戏):
→ WebSocket。
● 传统请求-响应或低频操作(如表单提交、API 调用):
→ HTTP。
● 兼容性与简单性优先:
→ 结合 SSE(推送) + HTTP(客户端请求)
