Web在處理典型的請求/響應模型方面做得很好,客戶端發出請求並且服務器響應資源。但是,當涉及到服務器必須向客戶端發送數據而沒有客戶端請求數據的應用程序時,這就是我們必須具有創造性的地方。
可以使用幾種不同的方法來實現基於Web的實時應用程序。
投票:
輪詢涉及客戶定期,以接收更新發出請求到服務器。這種方法存在兩個主要問題:首先,服務器可能沒有任何數據推動很長時間。因此,大量的帶寬可能會浪費,繼續輪詢服務器的更新。其次,投票率決定了應用程序的實時感受。雖然快速輪詢速度會使更新更快顯示,但浪費帶寬。相反,較長間隔的輪詢使用較少的帶寬,但缺點是更新不會很快出現。
在一般情況下,這是一個非常貧窮的解決方案在新的一年使用聊天應用2012
彗星/反向AJAX:
彗星是已在成功使用的技術最近5年採用請求/響應的概念並使用黑客來模擬實時效果。 Comet背後的一般理念是客戶端向服務器發出請求,服務器將無限期地打開連接。服務器一直等到有更新發送給客戶端。一旦更新準備就緒,服務器將發送響應,該響應模擬向客戶端發出請求的服務器。一旦客戶端收到響應,它會打開一個新的連接,並重復該過程。
當與延續相結合時,該技術已被證明在某些平臺上擴展到20,000多個同時連接,確保等待線程被釋放用於其他任務。
這不僅節省了帶寬,而且使應用程序感覺非常實時。
的WebSockets:
的WebSockets在HTML5引入作爲彗星的替代品,使用WS://協議而非http。然而,這還沒有被所有瀏覽器廠商廣泛採用,並且可能仍然存在關於協議規範的討論。它具有許多與Comet相同的優點。
有關彗星的更多信息,請Comet and PHP和the challenges of Comet in PHP。對於客戶端集成,請查看the Dojo Cometd Library。
[Stack Overflow不是您的個人研究助理](http://meta.stackexchange.com/a/128553/177538)和[您嘗試過什麼?](http:// mattgemmell.com/2008/12/08/what-have-you-tried/) – Joseph
你可以嘗試[糖果](http://candy-chat.github.com/candy/)。但它沒有創建組。您可以使用xmpp聊天服務器(如ejabberd或Openfire)對其進行配置。 –
另外我建議長時間輪詢如果你開發一個使用php/ajax –