与AJAX相反

时间:2011-02-15 16:23:54

标签: php javascript ajax webserver

是否有办法在PHP中实现更新页面(而不是整个页面)的服务器触发通信?

换句话说,有没有办法在服务器启动通信时实现“修改”的AJAX?

6 个答案:

答案 0 :(得分:4)

您可能正在考虑推送技术,例如COMET或长轮询。 请参阅http://en.wikipedia.org/wiki/Comet_(programming)http://en.wikipedia.org/wiki/Long_polling#Long_polling

答案 1 :(得分:2)

您无法打开从服务器到客户端的连接。您需要从客户端到服务器进行某种轮询。您可以查看COMET或仅在设定的时间段后轮询服务器以检查新内容。

答案 2 :(得分:0)

你需要看一些叫做各种名字的东西,比如Comet,AJAX Push,Server Push等。

http://en.wikipedia.org/wiki/Comet_(programming))

它保持HTTP连接打开,以便在某个时间点接收来自服务器的通信。

答案 3 :(得分:0)

是的,您可以在某些较新的浏览器(Chrome)中使用长轮询HTTP或网络套接字。

答案 4 :(得分:0)

你说的是“逆转ajax”,有时候也称“彗星”。反向ajax实际上不是http规范的一部分,它有点像黑客。本质上,它涉及保持打开HTTP请求,服务器随时发回响应。虽然这不是为了佯装,但说实话,99%的申请可能不值得压力。您需要一个彗星服务器来处理和管理所有打开的连接。认真考虑自动刷新常规的ajax调用等等。

答案 5 :(得分:0)

您需要的是 SSE (服务器发送事件)。唯一的缺点是IE还没有支持它,所以你可能也需要实现一些功能检测(例如, modernizr.js )并使用 long -polling SSE ,具体取决于您的浏览器是否支持 SSE (或只是使用 SSE polyfill ,非常感谢)。
为什么你可能想要实现这两种技术而不是支持良好支持的长轮询Server-Sent Events vs Polling

以下是 PHP 实施的教程:http://www.w3schools.com/html/html5_serversentevents.asp

SSE 给你的一个很好的解释:

  

HTML5引入了一个API来处理Server-Sent Events。 SSE背后的主要思想很简单:网页订阅Web服务器上的流更新的事件源。网页不必经常轮询服务器以检查更新(正如我们使用AJAX轮询所做的那样) - 它们会自动出现。请注意,客户端上的脚本只能监听更新,不能发布任何内容(将其与客户端可以订阅和发布的Web套接字进行比较)。因此,所有发布功能都由服务器执行。