0

XMPHP を介して XMPP セッションを事前にバインドし、rid/sid/jid を strophe クライアントに渡してセッションにアタッチしようとしています。

ここに接続コード:

$conn = new CIRCUIT_BOSH('server.com', 7070, $username, $pass, $resource, 'server.com', $printlog=true, $loglevel=XMPPHP_Log::LEVEL_VERBOSE);
$conn->autoSubscribe();

try{
  $conn->connect('http://xmpp.server.com/http-bind', 1, true);
  $log->lwrite('Connected!');
}catch(XMPPHP_Exception $e){
  die($e->getMessage());
}

除去と sid を取得していますが、$conn オブジェクトの fulljid は空のままで、openfire 管理コンソールで開始されたセッションを確認できません。

指定されたリソースを使用して手動で jid を作成し、jid/rid/sid を strophe に渡してアタッチで使用すると、ATTACHED ステータスが取得され、クライアントから BOSH IP への呼び出しが表示されますが、まだセッションが表示されず、接続を使用できません。

Strophe クライアント コード:

ドキュメントの準備ができたときに呼び出されます:

var sid = $.cookie('sid');
var rid = $.cookie('rid');
var jid = $.cookie('jid');
    $(document).trigger('attach', {
      sid: sid,
      rid: rid,
      jid: jid,
    });

$(document).bind('attach', function (ev, data) {

    var conn = new Strophe.Connection(
        "http://xmpp.server.com/http-bind");

    conn.attach(data.jid, data.sid, data.rid, function (status) {
        if (status === Strophe.Status.CONNECTED) {
            $(document).trigger('connected');
        } else if (status === Strophe.Status.DISCONNECTED) {
            $(document).trigger('disconnected');
        } else if (status === Strophe.Status.ATTACHED){
            $(document).trigger('attached');
        }
    });

    Object.connection = conn;

}); 

問題は、セッションを適切に作成していない XMPPHP 側から始まると思います。「接続済み」はトリガーされますが、「接続済み」ではありません。ステータス「接続済み」は送信されるはずですか? 私は何が欠けていますか?

4

1 に答える 1

0

OK、解決しました。XMPPHP lib が openfire サーバー上でセッションをまったく作成していないことがわかりました。そのため、良好でセッションを作成した XMPP クラスと、管理していない XMPP_BOSH クラスの簡単なテストを作成しました。一つ作る。次に、ここで問題レポートを見ました: http://code.google.com/p/xmpphp/issues/detail?id=47コメント番号 9 がprocessUntil()機能し、XMLStream.php から BOSH に関数をコピーして問題を修正しました。 .php、なぜこれが機能しているのかまだわかりません。その後、openfire サーバーでユーザーに設定されたパスワードの一部にも重複するバグがあることがわかりました。これらのパスワードには、 ! # % ^文字、何らかの理由で XMPP_BOSH が破損または変更されたパスワードを送信しているため、Auth Failed 例外が発生しました。パスワードを変更すると問題が解決し、Strophe.js ライブラリで作成されたセッション XMPPHP にアタッチできるようになりました。

于 2012-11-30T02:21:11.217 に答える