<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>实时通信 on ZiYang FrontEnd Interview</title><link>https://fe-interview.pangcy.cn/tags/%E5%AE%9E%E6%97%B6%E9%80%9A%E4%BF%A1/</link><description>Recent content in 实时通信 on ZiYang FrontEnd Interview</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 06 Mar 2025 13:07:39 +0800</lastBuildDate><atom:link href="https://fe-interview.pangcy.cn/tags/%E5%AE%9E%E6%97%B6%E9%80%9A%E4%BF%A1/index.xml" rel="self" type="application/rss+xml"/><item><title>SSE与WebSocket协议对比</title><link>https://fe-interview.pangcy.cn/docs/network/network-31/</link><pubDate>Tue, 04 Mar 2025 09:31:00 +0000</pubDate><guid>https://fe-interview.pangcy.cn/docs/network/network-31/</guid><description>&lt;h2 id="考察点分析">考察点分析 &lt;a href="#%e8%80%83%e5%af%9f%e7%82%b9%e5%88%86%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;p>该题目主要考察以下核心能力维度：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>网络协议理解&lt;/strong>：准确区分HTTP长连接与WebSocket协议在OSI模型中的层级差异&lt;/li>
&lt;li>&lt;strong>实时通信机制&lt;/strong>：掌握服务端推送技术与全双工通信的本质区别&lt;/li>
&lt;li>&lt;strong>技术选型能力&lt;/strong>：根据场景特征选择合适通信方案的系统思维&lt;/li>
&lt;/ol>
&lt;p>具体技术评估点：&lt;/p>
&lt;ul>
&lt;li>协议栈层级差异（HTTP-based vs TCP-based）&lt;/li>
&lt;li>数据传输方向特性（单工 vs 全双工）&lt;/li>
&lt;li>连接建立方式与握手过程&lt;/li>
&lt;li>数据格式与传输效率对比&lt;/li>
&lt;li>浏览器兼容性与失败恢复机制&lt;/li>
&lt;/ul>
&lt;h2 id="技术解析">技术解析 &lt;a href="#%e6%8a%80%e6%9c%af%e8%a7%a3%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;h3 id="关键知识点">关键知识点 &lt;a href="#%e5%85%b3%e9%94%ae%e7%9f%a5%e8%af%86%e7%82%b9" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;ol>
&lt;li>协议基础：SSE基于HTTP/1.1长连接，WebSocket采用独立协议&lt;/li>
&lt;li>连接方向：SSE单向服务端推送，WebSocket双向实时通道&lt;/li>
&lt;li>数据封装：SSE使用文本流，WebSocket支持二进制帧&lt;/li>
&lt;li>连接管理：SSE自动重连机制，WebSocket需手动处理&lt;/li>
&lt;li>协议开销：SSE头信息冗余，WebSocket握手后净荷高效&lt;/li>
&lt;/ol>
&lt;h3 id="原理剖析">原理剖析 &lt;a href="#%e5%8e%9f%e7%90%86%e5%89%96%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;p>&lt;strong>SSE（Server-Sent Events）&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>基于HTTP长连接，通过&lt;code>text/event-stream&lt;/code>MIME类型建立持久连接&lt;/li>
&lt;li>服务端通过&lt;code>EventSource&lt;/code>API持续发送UTF-8文本数据流&lt;/li>
&lt;li>内置断线重连机制（&lt;code>retry&lt;/code>字段控制间隔）&lt;/li>
&lt;li>通信模型类比&amp;quot;广播电台&amp;quot;：服务端单向发布，客户端被动接收&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>WebSocket&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>独立协议（ws://, wss://），通过HTTP Upgrade机制建立连接&lt;/li>
&lt;li>全双工通信，支持二进制帧传输（帧结构包含FIN/RSV/Opcode等控制位）&lt;/li>
&lt;li>需手动处理连接保持与异常恢复&lt;/li>
&lt;li>通信模型类似&amp;quot;电话通话&amp;quot;：双方可随时主动交流&lt;/li>
&lt;/ul>
&lt;pre class="mermaid">graph TD
 A[客户端] --&amp;gt;|HTTP GET /stream| B[服务端]
 B --&amp;gt;|保持TCP连接| A
 B --&amp;gt;|持续发送event/data| A
&lt;/pre>
&lt;h3 id="常见误区">常见误区 &lt;a href="#%e5%b8%b8%e8%a7%81%e8%af%af%e5%8c%ba" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;ol>
&lt;li>误认为SSE不能跨域（实际支持CORS）&lt;/li>
&lt;li>混淆SSE与长轮询机制（SSE是持久连接而非轮询）&lt;/li>
&lt;li>低估WebSocket协议复杂度（需处理ping/pong帧维持连接）&lt;/li>
&lt;/ol>
&lt;h2 id="问题解答">问题解答 &lt;a href="#%e9%97%ae%e9%a2%98%e8%a7%a3%e7%ad%94" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;p>SSE与WebSocket的核心差异体现在协议层与通信模式：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>协议基础&lt;/strong>：SSE基于HTTP长连接，利用简单文本流传输；WebSocket是独立协议，建立后脱离HTTP上下文&lt;/li>
&lt;li>&lt;strong>通信方向&lt;/strong>：SSE仅支持服务端到客户端的单向推送，WebSocket支持双向实时通信&lt;/li>
&lt;li>&lt;strong>数据传输&lt;/strong>：SSE默认UTF-8文本，WebSocket支持二进制帧且头部开销更小&lt;/li>
&lt;li>&lt;strong>连接管理&lt;/strong>：SSE内置自动重连，WebSocket需手动实现心跳检测&lt;/li>
&lt;li>&lt;strong>使用场景&lt;/strong>：SSE适合股票行情、新闻推送等单向通知场景；WebSocket适用于聊天室、在线协作等双向交互场景&lt;/li>
&lt;/ol>
&lt;p>SSE的核心优势在于：&lt;/p>
&lt;ul>
&lt;li>天然兼容HTTP生态（身份认证/缓存/代理）&lt;/li>
&lt;li>零延迟消息推送（长连接保持）&lt;/li>
&lt;li>自动错误恢复降低开发成本&lt;/li>
&lt;/ul>
&lt;p>WebSocket的不可替代性体现在：&lt;/p></description></item></channel></rss>