2011-02-15 41 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套接字進行比較)。因此,所有發佈功能都由服務器執行。