ajax - 有了 websockets,AJAX 有没有位置?

标签 ajax rest real-time websocket

我目前正在使用 Node.js 构建一个实时应用程序。我正在使用 socket.io 来支持我的实时交互,但是我加载了 jQuery,所以我可以使用 AJAX。我最初使用 socket.io 进行服务器和客户端之间的所有通信。

我开始认为 AJAX 可能更适合某些情况,例如异步执行 RESTful 事务,因为我不必在套接字中编写单独的消息案例来处理每个新事务以及编写 RESTful 路由。

我想知道我是否正在做某事,或者是否最好使用套接字来提高性能或其他我没有考虑的事情。

谢谢!
马特·穆勒

最佳答案

是的,WebSockets ( RFC 6455 ) 和 Ajax 是完全不同的,用于不同的目的。

正如您所说,使用 Ajax,您可以执行 RESTful 请求。这意味着您可以利用现有的 HTTP 基础设施,例如代理到 缓存 请求和使用 conditional get requests . Ajax 请求可能非常重要,因为每个 Ajax 请求都包含 HTTP header 并包含 cookie。

WebSockets 专为低延迟双向通信而设计。按照设计,WebSockets 在每条消息中的开销非常小。例如。 WebSockets 消息不必包含任何 HTTP header ,将来可能会用于 VoIP 和双向流传输。

另一个区别是 Ajax 可以与 一起使用。无国籍服务器。例如。如果您的 Web 负载与多个服务器平衡,则任何服务器都可以处理 Ajax 请求,即使在重新启动(或升级)之后也是如此。 Websocket 已“连接”并使用 有状态 服务器,因此使用多个服务器可能会更困难。

还有类似于 WebSockets 的 Server Sent Events,因为服务器可以将数据推送到客户端(如果没有 hacks(例如 Comet),Ajax 就无法做到这一点),并且它还可以处理自动重新连接。但它仅适用于一个方向(服务器到客户端)的消息。见 HTML5 Server-Side Event: EventSource vs. wrapped WebSocket .

关于ajax - 有了 websockets,AJAX 有没有位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4666571/

相关文章:

javascript - Highcharts 不在点之间画线

jQuery 的 .on() 方法结合提交事件

android - 发送 AJAX POST 请求

javascript - form.serialize() 不会发送 Ajax $.post() 中的所有值

python - Flask Python REST API 在接收 POST 时设置可选 JSON 参数

javascript - 基于浏览器的实时 MMO 游戏的内部运作

c++ - Qt中的实时保存

ajax - OData v2 按 $expanded 实体的属性过滤

java - 如何使用 REST API 为每个用户创建不同的资源

embedded - 嵌入式+实时开发培训建议