基本的に、サーバー間 (s2s) 接続には 2 つのタイプがあります。最初のものはゲートウェイまたはトランスポートと呼ばれますが、同じものです。これはおそらくあなたが探している種類です。非 XMPP 側の特定のドキュメントは見つかりませんでしたが、XMPP がレガシー サーバーへの変換をどのように考えているかについては、 http: //xmpp.org/extensions/xep-0100.htmlを参照してください。2 番目の種類は、追加の XEP では実際には説明されていません。通常の XMPP s2s 接続です。最新のドラフト更新については、RFC 3920 または RFC 3920bis で「Server-to-Server Communication」を探してください。
サーバーには独自のユーザーとプレゼンスがあり、それは XMPP ではないため、概念は XMPP モデルに完全には対応しません。ここで、トランスポートの作業が行われます。モデルから XMPP モデルへの変換を行う必要があります。これは多少の作業ですが、すべての決定を行う必要があります。
これにより、重要な設計上の選択肢の 1 つにたどり着きます。サービスから XMPP にマッピングするものとそうでないものを実際に決定する必要があります。これらの機能とユースケースの説明は、全体的な構造を推進します。たとえば、これは AOL または MSN チャット サービスと通信するためのトランスポートのようなものですか? 次に、ロスター、プレゼンス、キープ セッション情報に相当するものを、ローカル ユーザーからのログインとパスワードとともにリモート サーバーにマップする方法が必要になります。これは、トランスポートがそれらのユーザーのふりをする必要があり、ログインする必要があるためです。
または、他の誰かの XMPP ベースのチェス ゲームへの s2s ブリッジにすぎないので、リモート サーバーにログインする必要がなく、電子メール サーバーと同じように動作して、情報をやり取りすることができます。(通常の s2s 接続では、保存される唯一のセッションは、リモート サーバーで使用される SASL 認証になりますが、ユーザー レベルでは、s2s は接続を維持するだけで、ログイン セッションは維持しません。)
その他の要因は、スケーラビリティとモジュール性です。スケーラビリティに関する懸念事項のいくつかを解決しました。複数のトランスポートを配置して負荷のバランスを取ることを検討してください。モジュール性については、各パケットまたはアクションで何をするかについて決定を下す場所を確認してください。たとえば、サブスクリプション データをどのように処理し、追跡していますか? トランスポートに入れることはできますが、そうすると複数のトランスポートを使用することが難しくなります。または、コアサーバーの近くでその決定を下すと、XMPP 以外のサービスと通信する必要がある場合に、より単純なトランスポートを使用して共通のコードを使用できます。トレードオフは、脆弱性の可能性が高い、より複雑なコア サーバーです。