一尘不染

何时使用socket.io和何时使用ajax

ajax

我一直在nodejs中编程,研究了如何同时使用socket.io和对节点服务器的ajax调用。socket.io是否设计为替代ajax?我很好奇,在哪种情况下使用socket.io更好,而哪种ajax更好。感谢您的输入。


阅读 255

收藏
2020-07-26

共1个答案

一尘不染

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

Web套接字允许服务器在不进行轮询的情况下主动将通知推送到客户端。因此,如果您的应用程序具有任何需要在服务器上启动并且仅在浏览器中显示的信息,则Web套接字是一种更好的解决方案。

  • 以请求/响应模型向服务器提交数据
    • ajax或web套接字本质上等效,传统形式的POSTS也可以
  • 在事件流模型中将事件提交到服务器
    • Web套接字是最好的,可以通过Ajax进行仿真
  • 将事件从服务器推送到浏览器
    • Web套接字是最好的,可以通过Ajax长时间轮询,Flash等进行仿真(socket.io有几个后备选项,如果没有真正的Web套接字,可以尝试使用)。
  • 较旧的浏览器,某些移动平台
    • Web套接字支持不存在,因此ajax是您的后备
2020-07-26