当前位置: 首页 > 面试题库 >

当WebSockets可用时,为什么要使用AJAX?

白彦
2023-03-14
问题内容

我已经使用WebSockets一段时间了,我选择使用Node服务器和WebSockets为我在大学的最后一年的项目创建一个敏捷项目管理工具。我发现使用WebSockets可以使应用程序每秒处理的请求数量增加624%。

但是,自启动项目以来,我已经阅读了安全漏洞,并且某些浏览器默认选择禁用WebSocket。

这使我想到了一个问题:

当WebSocket似乎在降低延迟和资源开销方面做得很好时,为什么要使用AJAX?AJAX有什么比WebSocket更好的功能吗?


问题答案:

WebSockets并不是要取代AJAX,严格来说也不是替代Comet / long-poll(尽管在很多情况下这很有意义)。

WebSocket的目的是在浏览器和服务器之间提供低延迟,双向,全双工和长时间运行的连接。WebSockets为浏览器应用程序打开了新的应用程序域,而这实际上是使用HTTP和AJAX不可能实现的(交互式游戏,动态媒体流,桥接到现有网络协议等)。

但是,WebSockets和AJAX /
Comet之间肯定有目的重叠。例如,当浏览器希望收到服务器事件(即推送)的通知时,Comet技术和WebSockets当然都是可行的选择。如果您的应用程序需要低延迟推送事件,那么这将是支持WebSockets的一个因素。另一方面,如果您需要与现有框架和已部署的技术(OAuth,RESTful
API,代理,负载平衡器)共存,那么这将是支持Comet技术的一个因素(目前)。

如果您不需要WebSockets提供的特定好处,那么最好坚持使用AJAX和Comet等现有技术,因为这可以让您重用并与庞大的现有工具,技术,安全机制生态系统集成,知识库(例如,与WebSockets相比,stackoverflow上的更多的人知道HTTP
/ Ajax / Comet)等。

另一方面,如果要创建一个在HTTP / Ajax / Comet的延迟和连接限制内不能很好运行的新应用程序,请考虑使用WebSockets。

另外,一些答案表明WebSocket的缺点之一是服务器和浏览器支持有限/混合。让我散布一下。尽管iOS(iPhone,iPad)仍支持较早的协议(Hixie),但大多数WebSockets服务器均支持Hixie和HyBi
/ IETF
6455版本。大多数其他平台(如果它们还没有内置支持)可以通过web-
socket-js(基于Flash的polyfill)获得WebSockets支持。这涵盖了绝大多数Web用户。另外,如果您将Node用作服务器后端,则可以考虑使用Socket.IO,其中包括web-
socket-js作为后备,即使不可用(或禁用),它也将退回到使用任何Comet技术适用于给定的浏览器。

更新 :iOS 6现在支持当前的HyBi / IETF 6455标准。



 类似资料:
  • 我使用WebSockets已经有一段时间了,我选择利用Node server和WebSockets为我在大学的最后一年的项目创建一个敏捷的项目管理工具。我发现使用WebSockets使我的应用程序每秒可以处理的请求数增加了624%。

  • 如果我可以使用在一行中打印所需内容,那么我很难理解为什么我需要。

  • 然后用Gson lib将响应转换为我们需要的对象。 这来自Square/OKHTTP文档: 它的请求/响应API是用流畅的构建器和不变性设计的。它同时支持同步阻塞调用和带有回调的异步调用

  • 根据我的理解,有两个主要的Java类能够执行伪随机性活动:类和类。两者都生成伪随机数。但是,类生成加密安全的数字。 我唯一的解释是类比类运行得更快。这是真的吗?如果不是,那么为什么许多Java程序员更喜欢类而不是类呢?

  • 本文向大家介绍为什么要使用 kafka,为什么要使用消息队列?相关面试题,主要包含被问及为什么要使用 kafka,为什么要使用消息队列?时的应答技巧和注意事项,需要的朋友参考一下 缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。 解耦和扩展性:项目开始的

  • 问题内容: 我注意到,Oracle JDK中使用了许多Java 8方法,如果给定的对象(参数)为,则会在内部抛出该方法。 但是,如果取消引用对象,则将被抛出。那么,为什么要做这个额外的null检查并抛出 ? 一个明显的答案(或好处)是它使代码更具可读性,我同意。我很想知道在方法开始时使用的其他原因 。 问题答案: 因为您可以这样做使事情变得 明确 。喜欢: 或更短: 现在您 知道了 : 当 成功使