ajax - 在 ajax 可以做的地方使用 websocket/socket.io 有什么缺点?

标签 ajax node.js websocket socket.io

之前有人问过类似的问题,他们都得出了 AJAX 不会过时的结论。但是ajax在哪些方面比websockets好呢?

使用 socket.io,很容易退回到 flash 或 long polling,因此浏览器兼容性似乎不是问题。

Websocket 是双向的。 ajax 会发出异步请求,websocket 客户端会向服务器发送消息。 POST/GET 参数可以用 JSON 编码。

那么使用 100% websockets 有什么问题呢?如果每个访问者都与服务器保持持久的 websocket 连接,那会比在整个访问 session 中发出一些 ajax 请求更浪费吗?

最佳答案

我认为这会更浪费。对于每个连接的客户端,您都需要服务器上与该客户端配对的某种对象/函数/代码/任何东西。套接字处理程序或文件描述符,或者您的服务器已设置为处理连接。

使用 AJAX,您不需要服务器端资源到客户端的 1:1 映射。与服务器端资源相比,您的客户端数量可以更少地扩展。即使是 node.js 也有它可以处理和保持打开的连接数的限制。

要考虑的另一件事是某些 AJAX 响应也可以被缓存。随着您的扩展,您可以添加 HTTP 缓存以帮助减少频繁 AJAX 请求的负载。

关于ajax - 在 ajax 可以做的地方使用 websocket/socket.io 有什么缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4848642/

相关文章:

ajax - jQuery递归ajax poll使用setTimeout控制轮询间隔

Jquery Ajax 错误处理忽略中止

javascript - 如何为 node.js 服务器分配域名?

node.js - 使用 socket.io 中的对象

javascript - 当我单击更新按钮时,它不会更改/更新(CodeIgniter,更新多行)

php - Ajax 和砌体

javascript - 向终端提示添加颜色会导致出现大的空白

node.js - 由于 Npm 安装崩溃,无法安装 Scrypt

java - 子协议(protocol)的 Websocket ServerEndpoint 实例

javascript - Tornado Websockets 演示无法在 OpenShift 上运行