12

我一直在 nodejs 中编程,研究了如何使用 socket.io 和 ajax 调用节点服务器。socket.io 是否旨在取代 ajax?我很想知道在哪些情况下使用 socket.io 更好,哪些 ajax 更好。感谢您的输入。

4

1 回答 1

25

好吧,Web 套接字(通过 socket.io)提供 ajax 缺少的主要功能之一是服务器推送。因此,对于 ajax,如果您想了解服务器上的新事件(例如,不同的用户向您发送了一条消息),您需要进行服务器轮询,这意味着您以相对频繁的周期性循环发送 ajax 请求。大多数时候服务器会响应没有新的东西,但偶尔当有新的东西时,客户端可以了解它。

Web 套接字允许服务器主动向客户端推送通知而无需轮询。因此,如果您的应用程序有任何类型的信息需要在服务器上启动并显示在浏览器中,那么 Web 套接字是一个更好的解决方案。

  • 在请求/响应模型中向服务器提交数据
    • ajax 或 web 套接字本质上是等效的,传统形式的 POSTS 也可以
  • 在事件流模型中向服务器提交事件
    • 网络套接字是最好的,可以通过 ajax 来模拟
  • 将事件从服务器推送到浏览器
    • 网络套接字是最好的,可以通过 ajax 长轮询、flash 等来模拟(如果没有真正的网络套接字,socket.io 有几个可以尝试使用的后备)。
  • 较旧的浏览器,一些移动平台
    • 网络套接字支持不存在,所以 ajax 是你的后备
于 2013-06-24T00:33:40.657 回答