2

だから私は同じページで2つのブラウザを実行しています。このページでは、アカウントを使用してサーバーにログインできます。

接続は Strophe で構築されます。そしてすべてが HTML と JavaScript です。

これで、チャットを構築することができました (2 つのブラウザー間で、それぞれが異なるユーザーでログインしています)。そして、これは完全に機能しています。

私が今達成したいのは、あるユーザーから別のユーザーに IQ を送信することです。どちらもステータス バーで、IQ を受け取っていることを示しています (一方は「リクエストを受け取りました」、もう一方は「結果を受け取りました」)。

ここで、次のように iq を作成します。

    var iq = $iq({type: 'get', to: this.receiver}).c('query', {xmlns: 'http://jabber.org/protocol/pubsub#retrieve-subscriptions'});
    XmppObject.xmpp.connection.sendIQ(iq);

これは、ボタンを押すことで呼び出すことができる関数で設定されます。リスナーは次のように構築されます。

    $(XmppObject.xmpp).bind("iq", function(event, data){
    addToStatus('Received an iq: \n');
    handlePong(data.iq);
});

handlePong を次のように使用します。

    function handlePong(msg)
{
    var objMsg = $(msg);
    var from = objMsg.attr('from');
    var type = objMsg.attr('type');
    var id = objMsg.attr('id');
    var text = 'Received iq from ' + from + ' with id ' + id + ' and type ' + type + '\n\n';
    addToStatus(text);
}

client1 が IQ を client2 に送信すると、次の結果が得られます。

クライアント1: Received iq from client2@domain with id pingPong and type result

クライアント2:

彼が最初のリクエストを受け取ったことを client2 のステータスに表示する方法はありますか?

4

1 に答える 1

3

次のことを行う必要があります。

  • 独自の名前空間で構築するiqと、既存のものを単純にリサイクルすることはできません。それは機能しますが、明らかに間違っています。
  • iq. jQueryのバインドを使用してそれを行うことはありません。接続には を使用する必要がaddHandlerあります。

私が見つけることができる最も単純な例はping、strophe プラグインの実装です。https://github.com/metajack/strophejs-plugins/blob/master/ping/strophe.ping.js を参照してください。

于 2012-03-28T15:41:08.840 に答える