2011-02-15 47 views
4

是否有一种方法来实现服务器触发的通信,更新PHP中的页面(而不是整个页面)?AJAX的对面

换句话说就是有实施“修改” AJAX所在服务器发起通信的方法吗?

+2

有几个链接可能会为您指出一些有助于您研究的术语:http://en.wikipedia.org/wiki/Comet_(programming)http://en.wikipedia.org/wiki/ Reverse_Ajax – 2011-02-15 16:26:41

回答

2

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

0

是的,你可以使用长轮询HTTP或web套接字在一些较新的浏览器(Chrome浏览器)的。

0

你在说“逆向阿贾克斯”又名有时是“彗星”。反向ajax并不是http规范的一部分,这有点破解。从本质上讲,它需要打开一个HTTP请求,服务器每当发回响应。这不是因为虚心,尽管99%的应用程序可能不值得承受压力。你需要一个慧星服务器来处理和管理所有打开的连接。认真考虑自动刷新正常的Ajax调用或什么的。

0

你需要的是SSE(服务器发送的事件)。唯一的缺点是它还没有被任何IE支持,因此您可能还需要实现一些功能检测(例如,使用modernizr.js)并使用long-pollingSSE这取决于你的浏览器支持SSE(或只使用一个SSE填充工具,有很多谢天谢地)。
为什么你可能想实现这两种技术,而不是与良好支持长轮询回事? Server-Sent Events vs Polling

这里是PHP实现教程:http://www.w3schools.com/html/html5_serversentevents.asp

和什么SSE为您提供了一个很好的解释:

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