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

Posted

技术标签:

【中文标题】何时使用 socket.io 何时使用 ajax【英文标题】:When to use socket.io and when to use ajax 【发布时间】:2013-06-20 10:22:42 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

感谢您的快速回复。因此,除非您有充分的理由这样做,否则请使用 Web 套接字进行主动通信。 web socket有什么缺点吗? 浏览器对 Web 套接字的支持还没有对 ajax 的支持那么完整,尤其是在移动设备上。像所有新技术一样,它们周围的工具和社区知识并不像 ajax 那样成熟。此外,在 Web 套接字工作之前需要特定配置的代理和 Web 服务器也可能存在部署挑战。 @PeterLyons 所以如果我正在制作一个通知系统,那么 Web 套接字是最好的,对吧? 但是为什么要使用 socket.io 而不是简单的 node.js webSockets?用例/优势是什么? @AgentZebra 我的猜测是,当您只控制对话的一侧时,您应该选择使用 socket.io,因为当 Websockets 在另一侧不可用时,socket.io 将根据需要降级。如果你控制双方,在我看来,使用 node.js Websockets 没有缺点。但我对这里的矫正和教育持开放态度。

以上是关于何时使用 socket.io 何时使用 ajax的主要内容,如果未能解决你的问题,请参考以下文章

Socket.io 如何判断某人何时离开

何时使用 json 以及何时使用 jsonp 与 jquery $.ajax?

检测何时通过 ajax 加载资源

使用 Socket.io 检测(客户端)连接断开

何时使用 valueChangeListener 或 f:ajax 监听器?

jQuery.ajax() 成功/失败回调何时调用?