2011-01-07 45 views
0

我正在嘗試使用PHP和XMPP創建Web應用程序。其中一個要求是,當瀏覽器上的Javascript客戶端通過XMPP向服務器發送事件時,PHP會開始工作並提供該請求。如您所知,XMPP允許其客戶「聆聽」各種類型的活動,並在他們找到合適的活動時跳入生活。當然,PHP只在HTTP請求期間才能存活,因此根據我的研究,PHP XMPP客戶端只是「單向」 - 即它們只能生成事件並且不會偵聽並使用它們。PHP和XMPP兩種方式

我對專家的問題是:1。 是我的研究正確的嗎? PHP/XMPP只是單向的嗎? 2.有什麼辦法可以解決PHP的這個問題嗎? 3. Ruby on Rails是否存在相同的問題,或者它是否以「雙向」方式與XMPP協同工作?

非常感謝,感謝任何幫助!

乾杯

回答

1

這聽起來像你正在嘗試使用PHP XMPP服務器,這將是有問題的。這在Rails中可能是可行的,但並不理想。

這可能是值得在看看像ejabberd了很多開源的XMPP平臺之一。

+0

同意,還有其他人,我用過openfire。 http://www.igniterealtime.org/projects/openfire/ – kenny

0

我真的不明白究竟你是「一個用PHP/XMPP方式」的意思。然而,根據我的經驗,如果您選擇使用PHP + XMPP組合,您的瀏覽器客戶端使用某種xmpp JavaScript庫,那麼從來沒有限制。

這裏通常是流量將如何使用PHP/XMPP設置:

  1. 瀏覽器發送一個AJAX投票您的Web服務器上
  2. PHP腳本接收這個AJAX調查
  3. 內部PHP腳本會談bosh端點
  4. PHP腳本等待服務器的響應,直到發生超時
  5. 響應或超時PHP中繼從bosh端點響應您的瀏覽器客戶端的響應

在這個流程中的PHP腳本就像你的瀏覽器和Jabber服務器之間的連接管理器。事實上,在高流量下,不建議使用這種方法,因爲PHP腳本已經在等待來自bosh端點的響應,因此很快您的web服務器可能會停止接受新的ajax民意調查。

您可以試用Jaxl libraryboshchat.php示例示例,這些示例示例與上面描述的完全相同。