为什么在WebSockets可用时使用AJAX?

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

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

这使我想到了一个问题:

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

宝儿理查德2020/03/23 15:27:11

HTTP和Websockets之间差异的示例,以客户端大小的库的形式出现,它可以处理客户端上的Websocket端点(如REST API)和RESTful端点(如Websockets)。 https://github.com/mikedeshazer/sockrest 同样,对于那些尝试使用客户端上的websocket API或反之亦然的人。libs / sockrest.js几乎可以清楚表明它们之间的差异(或者应该如此)。

GO2020/03/23 15:27:10

WebSockets在较旧的Web浏览器中不起作用,并且支持 WebSocket的浏览器通常具有不同的实现。那几乎是唯一的好理由,为什么他们一直没有使用它们代替AJAX。

伽罗2020/03/23 15:27:10

我所读到的有关网络套接字和安全性的大多数抱怨来自网络浏览器安全性和防火墙安全性工具的安全性供应商。问题是他们不知道如何对websockets流量进行安全性分析,因为一旦它完成了从HTTP到websocket二进制协议的升级,数据包的内容及其含义就取决于应用程序(基于您所编程的内容)。对于这些公司的生计是基于对您所有互联网流量进行分析和分类的公司而言,这显然是一个物流梦night。:)

卡卡西Near2020/03/23 15:27:10

我认为我们无法对Websockets和HTTP进行清晰的比较,因为它们既不是竞争对手,也不是解决相同的问题。

Websocket是用于以近实时方式处理长期存在的双向数据流的绝佳选择,而REST非常适合偶尔进行的通信。使用websocket是一项可观的投资,因此对于偶尔的连接来说是一个过大的杀伤力。

您可能会发现,当存在高负载时,Websockets会做得更好,在某些情况下,HTTP会稍快一些,因为它可以利用缓存。将REST与Websockets进行比较就像将苹果与桔子进行比较。

我们应该检查哪种解决方案可以为我们的应用程序提供更好的解决方案,哪种解决方案最适合我们的使用案例。

猴子村村2020/03/23 15:27:10

除了较旧的浏览器(包括IE9,因为从IE10开始将支持WebSockets)存在问题外,尚不支持WebSockets的网络中介(包括透明代理,反向代理和负载平衡器)仍然存在很大问题。有些移动运营商会完全阻止WebSocket通信(即,在HTTP UPGRADE命令之后)。

随着时间的流逝,WebSockets将得到越来越多的支持,但是与此同时,您应该始终具有基于HTTP的后备方法,用于将数据发送到浏览器。