php - 对于使用 PHP 的简单应用程序,Websocket 相对于 AJAX 的优势

标签 php jquery ajax websocket

我在 PHP 中使用了一些 AJAX 来处理诸如提交表单之类的事情,而且我最近开始研究 websockets。我关注了this tutorial了解基础知识。据我所知,websockets 保持连接打开,而 AJAX 打开和关闭请求。

我的问题是,如果您只是提交表单或像 auto_complete 这样的简单任务(反正有一个 jQuery 插件),websockets 是否比 AJAX 更有优势?也许本教程不是最棒的,但似乎要让 websockets 工作(至少使用 PHP)涉及的代码比简单的 AJAX 调用(或使用捆绑它的 jQuery)要多得多。我在一些地方读到它要快一些,但是如果我正在处理没有收到大量请求的东西,它真的会有所作为吗?如果我错了请纠正我,但并非所有浏览器都支持 websockets,对吗?

最佳答案

Websockets 有两个优点。

  1. 它们的开销要少得多,从而带来更好的网络性能

  2. 它们允许服务器发送客户端未明确请求的数据。

第二个是最重要的优势。

在AJAX中,服务器发送的所有内容都必须是客户端对先前请求的响应,并且每个请求只能响应一次。但在许多应用程序中,尤其是多用户应用程序中,事件发生在服务器上,这些事件必须立即推送到客户端。在 AJAX 中有解决方法,比如延迟对请求的回答,直到有东西要报告(长轮询),但这些方法很脏。这就是为什么有 Websockets 的原因。通过 websocket 连接,服务器可以在需要时随时向客户端发送消息,而无需等待客户端的请求。

但不幸的是,WebSockets 也有缺点:

  1. Web 开发框架对它们的支持还不够好(目前!)
  2. 并非所有网络浏览器都支持它 ( but most desktop browsers already do )
  3. 许多代理和反向代理无法中继 websocket 流量(目前!)

关于php - 对于使用 PHP 的简单应用程序,Websocket 相对于 AJAX 的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13765008/

相关文章:

javascript - 为什么这个非常简单的 AJAX 脚本不起作用

php数据库表选择受限

text - jQuery:检查文本是否存在于另一个元素中

php - 使用 jQuery.parseJSON 检索包含空格的 php 数组

jquery - JSON 对象上的 .grep

javascript - 使用 jQuery 的延迟链接 ajax 请求

javascript - 如何在页面加载时从表加载一定数量的行,并且仅在用户加载它们时才加载更多行?

javascript - 服务器使用 Grails 发送事件

javascript - php 在同一文件中回显警报框和 header 重定向

php - 如何在 Yii2 的动态模型中添加自定义验证功能?