3

XMPP の仕組みを学び、理解しようとしています。

私が理解しているように、node-xmpp-boshは接続マネージャーです。接続マネージャーは完全な xmpp サーバーではありませんが、一種のプロキシのように機能し、xmpp 要求を専用の xmpp サーバーに転送します。これにより、専用の xmpp サーバーが接続の処理で通常負担する負荷の一部を節約できます。

接続する OpenFire xmpp サーバーが提供されましたが、これは Web アプリケーションとは別のドメインにあります。node-xmpp-bosh をプロキシとして使用して、結果として生じる XSS の問題を回避することにしました。これにより、古いブラウザーの BOSH フォールバックで websocket を使用できるようになります。

クライアント アプリケーションでStrophe.js ライブラリを使用して、実際のメッセージを送信しようとしています。

要求を実際の xmpp サーバーに転送するように node-xmpp-bosh を構成するにはどうすればよいですか? ドキュメントはこれをあまり明確にしていないので、接続マネージャーをホストする同じマシン上の xmpp サーバーにのみ要求を転送していると思います。また、接続マネージャーを使用するには、Strophe を別の方法で構成する必要がありますか?それとも、接続マネージャーに要求を送信するだけで、それが送信されますか?

よろしくお願いします

4

2 に答える 2

4

node-xmpp-bosh のデフォルトの動作は、DNS を使用して Jabber ID でドメインを検索することです。

カスタム ルックアップ サービスを提供することで、これをオーバーライドできます。以下の例では、ルックアップ サービスは常に 10.10.7.245 に接続します。

var server = nxb.start_bosh({
    lookup_service: MyLookupService,
    logging: "TRACE",
}) ;

function MyLookupService(port, stream)
{
    console.log("connecting") ;
    this.connect = function(socket) {
        var self = this ;

        socket.connect(5222, "10.10.7.245", function(e) {
            console.log("connected:", e) ;
            self.emit("connect",e) ;
        }) ;

        socket.once("error", function(e) {
            console.log("error connecting:", e) ;
            self.emit("error",e) ;
        }) ;
    } ;
}

これはどこにも文書化されていないようですが、それがあなたのやり方です。

于 2014-01-28T18:25:12.517 に答える
1

クライアントからの元の要求によって、接続マネージャーがこの接続要求をどこに転送するかが決まります。ユーザー名が foobar@jabber.org の場合、接続マネージャーは jabber.org の XMPP サーバーに転送します。

于 2013-11-28T20:58:12.130 に答える