与仅通过AJAX提供信息相比,使用TCP编程的站点(即站点上的某个人是否连接到服务器并通过TCP交换信息)是如何扩展的?说交换的信息是一样的。
试图澄清:我正在特别询问规模:我已经知道,与仅静态提供信息相比,保持数千个TCP连接是资源(哪些?)要求。我想知道这是否正确。
答案 0 :(得分:1)
WebSockets是一种允许服务器将通知推送到客户端的技术。另一方面,AJAX是一种拉技术,意味着客户端正在向服务器发送请求。
因此,例如,如果您有一个应用程序需要定期从服务器接收通知并更新其UI,则WebSocket更适应并且更好。使用AJAX,您将不得不定期向服务器发出请求,以查看服务器上是否有某些状态发生了变化。使用WebSockets,服务器将通知客户端服务器上发生的某些事件。这将在一个请求中发生。
所以我想这实际上取决于您正在开发的应用程序类型,但WebSockets和AJAX是两种完全不同的技术,可以解决不同类型的问题。选择哪一个取决于您的情况。
答案 1 :(得分:1)
Websockets不是AJAX的一对一;它们提供截然不同的功能。 Websockets提供了将数据“推送”到客户端的功能。 AJAX的工作原理是“推送”数据并返回响应。
WebSockets的目的是在浏览器和服务器之间提供低延迟,双向,全双工和长时间运行的连接。 WebSockets为以前使用HTTP或AJAX不可用的浏览器应用程序提供了可能性。
但是,WebSockets和AJAX之间的目的肯定存在重叠。例如,当浏览器想要通知服务器事件(即推送)时,AJAX或WebSockets都是可行的选择。如果您的应用程序需要低延迟推送事件,那么这将是支持WebSockets的一个因素,在这种情况下肯定会更好地扩展。另一方面,如果您需要使用现有框架和已部署的技术(OAuth,RESTful API,代理等),那么最好使用AJAX。
如果您不需要WebSockets提供的特定优势,那么坚持使用AJAX等现有技术可能是一个更好的主意,因为这可以让您重用现有的工具,技术,安全机制生态系统,过去7年来开发的知识库。
但总体而言,Websockets的表现将超过AJAX。
答案 2 :(得分:0)
在WebSockets和标准TCP连接之间的可扩展性方面,我认为没有任何区别。 WebSocket是从静态单向管道到双工管道的升级。物理资源完全相同。
WebSockets的主要优点是它们可以在端口80上运行,因此它可以避免大多数防火墙问题,但您必须首先通过标准HTTP进行连接。
答案 3 :(得分:0)
这是一个很好的页面,清楚地显示了与Ajax长轮询(特别是大规模)相比,WebSocket API的好处:http://www.websocket.org/quantum.html
基本上归结为这样一个事实:一旦建立了初始HTTP握手,数据可以更快地来回传播,因为大大减少了报头开销(这是大多数人所说的双向通信)。
请注意,如果您只需要能够定期从服务器推送数据,但您不需要发出许多客户端发起的请求,那么偶尔使用HTML5 server-sent events Ajax来自客户端的请求可能正是您所需要的,并且比WebSocket API更容易实现。