2012-06-14 51 views
8

我期待開發一個網站,其特點是網站訪問者和網站管理員之間的聊天功能。如何使用PHP和JQuery開發基於Web的XMPP聊天工具?

我知道該怎麼做,這將是使用XMPP的最佳方式,但我一直在使用它沒有經驗。我正在尋找使用PHP來實現這一點。

我已經下載XMPPHP和我編輯的例子在Gmail中發送郵件到我的谷歌聊天客戶端,但是當我回復谷歌告訴我,另一端沒有得到消息。

到目前爲止,最豐富的教程是http://www.ibm.com/developerworks/xml/tutorials/x-realtimeXMPPtut/,但我不明白爲什麼我需要安裝'Openfire',也不想在本地機器上構建網站。

有人可以告訴我,我需要什麼(更重要的是,爲什麼)設立這個項目,所以我可以開始建立它的代碼?

+0

它必須是PHP嗎?它是否必須是XMPP? – Sixty4Bit

+0

@ Sixty4Bit抱歉,延遲迴復你。必須是PHP,不*必須* XMPP – P3tro

+1

爲什麼不嘗試mibew?這在PHP中很有效。 – Tanmay

回答

8

從評論到其他答案我會告訴你爲什麼來看,和一個小的,但不能給你這是一個解決方案,因爲我在「相關」邊欄中看到大量解決方案。你將不得不選擇正確的,並知道「爲什麼」你將能夠做出一個受過教育的決定。

對於聊天感覺不錯,響應必須有一些直接性。隨着時間的推移,用戶會注意到一秒鐘的滯後時間,並給人一種不合時宜的感覺。要在瀏覽器中立即或「實時」響應,需要持久連接,以便在新信息進入時立即顯示。在瀏覽器

持久連接由於HTTP的請求/響應的規格是困難的。有一些規範正在努力爲瀏覽器帶來持久連接,但這些瀏覽器並不普遍。在將來,持久連接將由WebSocketsSPDY提供,這兩者都可用於Chrome,Safari和FireFox的最新版本,而IE則滯後一點。

另一個選項持久連接是XMPP。 XMPP是用於Jabber聊天客戶端的協議。由於它是一個開源實現,它已被移植到許多其他用途。存在JavaScript庫,允許您將瀏覽器連接到XMPP套接字並偵聽新消息。我在過去看到的方法是將消息發送到Web服務器,然後讓Web服務器向XMPP服務器通知新消息,然後將新消息廣播給所有用戶。但是,這需要一個XMPP服務器,這會增加系統的複雜性。

大多數用戶都不會在瀏覽器版本的最前沿,所以你需要能夠處理舊的瀏覽器。大多數替代方法涉及打開一個長時間連接到服務器,每當新數據到達時都會響應。下面是用於模擬舊的瀏覽器持久連接的方法列表:

  • 的Adobe Flash插槽
  • 的ActiveX HTMLFILE(IE)
  • 服務器發送的事件(歌劇)
  • XHR與多編碼
  • XHR長輪詢

這些老方法,和WebSockets的,由庫支持名爲Juggernaut

UPDATEJuggernaut has been deprecated by the maintainer,有很好的理由:現代瀏覽器都支持通過規範稱爲服務器發送的事件(SSE)的開箱(當然,IE除外)的持久連接。向後兼容性現在由polyfills(What is a polyfill?)處理,作爲棄用後的備註,有幾個好的將SSE帶入傳統瀏覽器。

+1

解決問題的出色反應和介紹。選擇答案。 – P3tro

0
+0

嗨。我很感謝你的迴應,但它並沒有回答我的問題。我已經在Google上搜索了一些教程,我發現這些教程都不符合我的需求,或者只是「開箱即用」的解決方案,這並不理想。 我想能夠建立這個應用程序,但我不明白這是我要求幫助的基礎知識。 – P3tro

+0

@IjazAhmedBhatti我認爲你很粗魯,你的評論對本次討論或網站沒有任何意義。 – peacemaker

0

即時消息應用程序應該是實時的。一個網站使用請求/響應方法的HTTP協議。一種方法是POLLING。向該服務器發送用於該用戶的新的未決消息的請求。服務器應該能夠區分已發送的消息和尚未發送的消息。這種方法被稱爲輪詢。您的瀏覽器不斷要求服務器發送任何待處理的消息。 但是,這可能會浪費帶寬,也會浪費電池(萬一網站使用智能手機訪問)。更好的選擇是仍然使用XMPP服務器。