4

プロジェクトに converse.js を実装して Openfire チャットを使用しようとしており、JAXL を使用してユーザーを事前バインドしています。私のクラウド(VPS)サーバーで正常に動作しています。クライアントサーバーで同じコードを公開しようとすると、機能しません。私のローカルホストから同じものを実行すると、同じ問題が発生します。機能しないということは、事前バインド要求がしばらく (保留中) 残り、500 内部サーバー エラーで終了することを意味します。

サーバー構成を確認しました。元気そうです。これをデバッグする方法を教えてくれる人はいますか?

これが私の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

アップデート

これは、クライアント サーバーからの 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="bala101@iz25pkf9c7hz">  
</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)
4

1 に答える 1

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()関数は、PHP バージョンが 5.3.18 よりも新しい場合、応答として (0) の代わりに (-1) を返します。

だから私は次のように#137を変更しました

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

これは私の問題を解決します。

参照 https://bugs.php.net/bug.php?id=63411

注: PHP バージョンが 5.3.x よりも大きい場合は、プロジェクトで JAXL を使用する前に移行チェックを行ってください。以下のリンクには、不便を見つけるためのシェルスクリプトがあります
http://blog.waja.info/2013/09/15/migrating-from-php-5-dot-3-x-to-5-dot-4-x- and-finding-problematic-application-code/

これがいつか誰かを助けることができることを願っています。

ハッピーコーディング

于 2014-11-07T06:12:29.917 に答える