计算机网络--面试总结四(HTTP、RPC、WebSocket、SSE)

当前:计算机网络--面试总结四(HTTP、RPC、WebSocket、SSE)

计算机网络--面试知识总结一

计算机网络-----面试知识总结二

计算机网络--面试总结三(Http与Https)

知识积累之ThreadLocal---InheritableThreadLocal总结

HTTP和RPC

RPC的特点:

  • 1、调用方便:调用远程服务就像调用本地方法一样
  • 2、性能较好:RPC通常使用二进制进行传输,这样可以减少数据的体积并且提高传输效率,由于RPC考虑的是服务之间的调用不像HTTP那样需要兼容各种场景,因此请求头部内容也相对比较简单,并且RPC可以选择各种传输协议,比如TCP、UDP等等,而HTTP传输层使用的是TCP

其实通过前面的学习,我们不难知道HTTP2.0,3.0其实给予1.1都改进了很多,性能也非常不错,可能比很多RPC协议都要好,但是2.0是这几年才出的,而RPC出现的时间比HTTP1.1还早,所以也不太可能取代RPC

为什么要有WebSocket

传统HTTP想要及时拿到服务端数据的方法

现在有这样一种场景,需要客户端-服务端进行频繁的交互,比如聊天室、网页小游戏等,如果使用传统的HTTP来拿到服务端响应后的数据主要就是两种方案

  • 1、定时轮训获取
  • 2、长轮训获取
定是轮询

对于定时轮寻来说,就是客户端浏览器每隔一段时间发送一个请求去问服务端好了没有,如果没好就直接返回,然后进行下一次的请求发送,这样一次往复,比如我们轮询时间定的是1s那么就是,当第一次访问服务端,服务端还没好之后,客服端需要等待1s后又重新发送请求,知道拿到数据为止

  • 缺点:由于是定时轮询,因此,客户端拿到数据可能有延迟
长轮训

对于长轮询来说:其实长轮寻,其实可以看作是一个被延迟的HTTP请求过程,即,比如客服端发送一个请求,然后就一直等待服务端的响应,只要没到超时时间,那么就一直等待如果服务端做出了响应了,那么客户端就能马上收到消息,如果超时了,那么只需要重新发送HTTP请求就可以了,从而达到能够立刻知道服务端响应

优点
  1. 减少请求次数:相比于短轮询,长轮询减少了无效的请求次数,因为服务器会在有数据时才返回响应。
  2. 降低带宽和服务器负载:由于减少了请求次数,长轮询也降低了对带宽和服务器资源的消耗。
  3. 实时性较好:虽然长轮询不是真正的实时推送,但它可以在一定程度上模拟实时效果,因为服务器在有新数据时会立即响应。
缺点
  1. 延迟:虽然长轮询可以减少请求次数,但它仍然存在一定的延迟,因为客户端需要等待服务器响应才能获取新数据。
  2. 资源占用:在长时间没有新数据的情况下,服务器需要保持连接打开状态,这可能会占用一定的服务器资源。
应用场景

长轮询适用于那些对实时性要求不是特别高,但又不希望频繁发送请求的Web应用程序场景,新闻更新提示等。在这些场景中,长轮询可以在不增加过多服务器负载的情况下,提供较好的实时性体验。

WebSocket与SSE的区别和应用场景

WebSocket

定义与特点

WebSocket是一种在单个TCP连接上进行全双工通讯的协议。它允许客户端和服务器之间通过持久连接进行实时通信,而无需像传统的HTTP请求那样频繁地建立和断开连接。WebSocket协议建立在HTTP之上,但一旦连接建立,通信就独立于HTTP。

使用场景

WebSocket适用于需要高频率、双向数据交换的应用场景,如在线游戏、实时聊天应用、实时协作工具、股票交易平台等。这些场景要求服务器能够主动向客户端推送数据,并且客户端也需要能够随时向服务器发送数据。

优点

  • 实时性强:WebSocket提供了低延迟的实时通信能力。
  • 双向通信:支持客户端和服务器之间的双向数据传输。
  • 减少服务器负担:由于减少了HTTP连接的建立和断开次数,减轻了服务器的负担。
  • 支持自定义协议:开发者可以自定义二进制帧,支持更灵活的数据传输方式。

缺点

  • 复杂度较高:相对于SSE,WebSocket的实现和维护复杂度更高。
  • 兼容性:虽然WebSocket的兼容性较好,但在一些老旧的浏览器或服务器环境中可能仍存在问题。
  1. 服务器向客户端推送数据。
  2. 客户端接收数据。
定义与特点:

SSE是一种基于HTTP的服务器推送技术他是半双工通信,它允许服务器主动向客户端推送数据。SSE通过建立一个持久的HTTP连接(实际上是长轮询的一种变种),服务器可以在有数据更新时主动向客户端发送事件通知。客户端使用浏览器内置的EventSource接口来接收这些事件。

使用场景

SSE适用于需要从服务器向客户端单向推送实时信息的场景,如现在的AI回答基本上使用的都是SSE技术,新闻更新、股票价格变动、社交媒体通知等。这些场景通常不需要客户端向服务器发送大量数据,而是需要服务器能够实时地向客户端推送最新的信息。

优点

  • 实现简单:SSE的实现相对简单,客户端只需使用EventSource接口即可。
  • 浏览器兼容性好:SSE得到了大多数现代浏览器的支持。
  • 服务器负担较轻:由于基于HTTP协议,SSE可以利用现有的HTTP服务器和基础设施。

缺点

  • 单向通信:SSE只支持服务器向客户端的单向推送,不支持客户端向服务器发送数据(除非使用其他机制,如Ajax)。
  • 连接限制:在某些情况下,浏览器可能对SSE连接数有限制,这可能会影响大规模应用的性能。
  • 安全性:SSE本身不提供加密机制,需要依赖TLS等协议来保证数据传输的安全性。

总结

WebSocket和SSE都是实现实时通信的有效技术,它们各有优劣和适用场景。WebSocket适用于需要高频率、双向数据交换的应用场景,而SSE则适用于从服务器向客户端单向推送实时信息的场景。在选择使用哪种技术时,需要根据具体的应用需求和场景来综合考虑。

相关推荐
boooooooom1 小时前
别再用错 ref/reactive!90%程序员踩过的响应式坑,一文根治
javascript·vue.js·面试
张元清1 小时前
Astro 6.0:被 Cloudflare 收购两个月后,这个"静态框架"要重新定义全栈了
前端·javascript·面试
青青家的小灰灰1 小时前
深入理解 async/await:现代异步编程的终极解决方案
前端·javascript·面试
Baihai_IDP3 小时前
为什么 AI 巨头们放弃私有壁垒,争相拥抱 Agent Skills
人工智能·面试·llm
Moment4 小时前
Agent 开发本质上就是高级点的 CRUD
前端·后端·面试
哈里谢顿14 小时前
0305乒乓xx agent运维开发岗面试记录
面试
哈里谢顿14 小时前
0309面试二总结
面试
哈里谢顿15 小时前
0309面试一记录
面试
哈里谢顿15 小时前
0310面试二记录
面试
哈里谢顿15 小时前
0310面试记录一
面试