Web开发

首页 » 常识 » 诊断 » 开发人员将Ajax在WebSockets
TUhjnbcbe - 2023/3/31 20:47:00
青海白癜风QQ交流群 http://liangssw.com/bozhu/12961.html

开发人员通常会将AJAX和WebSockets相互对接,使其成为一种选择。我们看看如何将两者结合起来,为宇宙带来和平。

我见过很多关于AJAX和WebSockets的讨论,我认为如果可以将两者结合起来会很酷。我可能有偏见,但我总是倾向于使用WebSockets作为首选的通信机制。但是,由于AJAX根植于许多Web开发人员,我认为看看是否可以在WebSockets之上实现AJAX会很有趣。

您可能认为AJAX和REST是自切片面包以来最好的技术;但是,可以使用Websockets技术构建整个AJAX协议。这使得Websockets实际上成为AJAX的超集,因此我们使用WebSockets作为主要的通信链接可能是有意义的。

通过WebSockets运行AJAX有几个好处,例如:

开销更少,因此更快(包括比HTTP/2更少的开销)。如果需要,更容易实现有状态服务。AJAX和异步WebSocket数据都可以通过同一连接进行多路复用。AJAX对单个请求返回单个响应。但是,AJAX是异步的;因此,Web前端可以发送任意数量的AJAX请求,而无需等待每个响应。

另一方面,WebSockets可以处理浏览器和服务器之间的多个双向消息。在任一方向上发送的消息之间没有相关性。由应用程序来解释和管理这些消息。但是,在WebSocket连接上实现AJAX在概念上非常简单:

数据编码为JSON。JSON数据通过WebSocket连接发送到服务器。服务器从JSON字符串重建数据。服务器找到AJAX服务并调用该服务。来自AJAX服务的响应数据被编码为JSON。服务器通过WebSocket连接将JSON响应数据发送到浏览器。AJAX响应在浏览器中进行管理。在设计代码时,我们需要考虑一些AJAX特定功能。如上所述,AJAX在客户端是异步的,因此许多AJAX请求可以同时在飞行中。每个AJAX请求都与一个JavaScript回调相关联,该回调在服务器发送响应时被调用。我们必须找到一种方法来唯一地识别每个飞行中的请求,以便每个AJAX响应触发正确的回调函数。下图描绘了三个异步和正在进行的AJAX请求:

图1:三个异步飞行AJAX请求

即使响应消息的顺序不同,每个异步响应A,B和C也必须为请求A,B和C触发正确的响应回调函数。

实现客户端AJAX回调处理的最简单方法是将每个回调存储在一个对象中,并为每个回调提供唯一的ID。ID(例如可以是数字)作为消息的一部分发送到服务器。然后,服务器端将此ID与响应数据捆绑在一起。

1
查看完整版本: 开发人员将Ajax在WebSockets