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 側から始まると思います。「接続済み」はトリガーされますが、「接続済み」ではありません。ステータス「接続済み」は送信されるはずですか? 私は何が欠けていますか?