2014-10-30 16 views
4

我想在我的項目中實施converse.js使用Openfire聊天並使用JAXL預綁定用戶。它在我的雲(VPS)服務器上運行良好。當我嘗試在客戶端服務器上發佈相同的代碼時,它不起作用。並從我的本地主機執行相同的問題時得到同樣的問題。不工作意味着prebind請求保持(暫掛)一段時間,並以500內部服務器錯誤結束。Openfire的http預綁定與JAXL

我們已經檢查過服務器配置。似乎很好。任何人都可以告訴我如何調試這一個?

這裏是我的jaxl配置代碼。

$client = new JAXL(array(
    'jid'=>$un, 
    'pass'=>$pwd, 
    'bosh_url' => 'http://xx.xx.xx.xx/http-bind', 
    'log_path' => __DIR__ . '/logs', 
    'log_level' => JAXL_INFO, 
    'strict' => false 
)); 

在此先感謝
-josan

UPDATE

這裏是從我的客戶端服務器我jaxl日誌。

1.jaxl:180 - 2014-11-05 10:47:47 - dns srv lookup for iz25pkf9c7hz 
2.jaxl:189 - 2014-11-05 10:47:47 - including bosh xep 
3.jaxl_fsm:61 - 2014-11-05 10:47:47 - calling state handler 'setup' for incoming event 'start_cb' 
4.jaxl_fsm:71 - 2014-11-05 10:47:47 - current state 'wait_for_stream_features' 
5.xep_0206:109 - 2014-11-05 10:47:47 - posting to http://182.92.156.24/http-bind body 
6.<body xmlns="http://jabber.org/protocol/httpbind" content="text/xml; charset=utf-8" 
to="iz25pkf9c7hz" route="xmpp:iz25pkf9c7hz:5222" secure="true" xml:lang="en" 
xmpp:version="1.0" xmlns:xmpp="urn:xmpp:xbosh" hold="1" wait="30" rid="2280" 
ver="1.10" from="[email protected]"> 
</body> 
7.xep_0206:132 - 2014-11-05 10:47:47 - recving for 2280 
8.xep_0206:132 - 2014-11-05 10:47:48 - recving for 2280 
9.xep_0206:132 - 2014-11-05 10:47:48 - recving for 2280 
10.xep_0206:132 - 2014-11-05 10:47:48 - recving for 2280 
. 
. 
. 
. 
58854.xep_0206:132 - 2014-11-05 10:47:48 - recving for 2280 
. 
. 
(Its just kept on adding for 5 or 3 mins) 
+0

我看到不同主機之間的區別是PHP版本和apache版本。工作服務器有PHP v5.3.3/Apache/2.2.15(CentOS)。我在本地系統上安裝了PHP v5.4.7。所以我已將我的xampp降級到1.7.4(PHPv5.3.5/Apache(2.2.17))。如果我試圖從localhost訪問它,我將得到的響應爲200 OK,內容長度爲0.任何想法爲什麼會發生? – 2014-11-03 08:33:09

回答

2

最後我們找到了這個問題的解決方案。
正如我在我的評論已經提到的問題造成的PHP版本的

在JAXL

#135 $changed = curl_multi_select($this->mch, 0.1); 

#137 if($changed == 0 && $running == 0) { 

https://github.com/jaxl/JAXL/blob/v3.x/xep/xep_0206.php#L135

線路上無#135返回那裏使用的curl_multi_select()功能( -1)而不是(0)作爲PHP版本高於5.3.18時的響應

所以我改變了#137,如下所示

#137 if(($changed == 0 || $changed == -1) && $running == 0) { 

這個東西解決了我的問題。

裁判https://bugs.php.net/bug.php?id=63411

注:不是5.3.x大PHP版本都使用JAXL在對你的項目之前遷移判定。 有shell腳本以下鏈接找到不便
http://blog.waja.info/2013/09/15/migrating-from-php-5-dot-3-x-to-5-dot-4-x-and-finding-problematic-application-code/

希望能幫助在某個時候有人。

快樂編碼