短い答えは「両方」です。
XMPP は、リアルタイム チャット (およびその他の多くのこと) を行うためのアプリケーション プロトコルのセットです。その後、何らかの方法でネットワークを介して転送する必要があるため、トランスポート バインディングが必要です。XMPP には 3 つの主要なトランスポート バインディングがあります。
- TCP/IP は、デバイス上のネイティブ クライアントでインターネット上で通常使用されるものです。
- HTTP (BOSH と呼ばれる)。これは、ブラウザーで XMPP を使用するときに従来から使用されてきたものです (ブラウザーの Javascript アプリでは TCP-IP を使用できないため)。
- 最新のブラウザーで XMPP を実行するときに使用する Websockets。
したがって、ブラウザーでチャット アプリケーションを開発している場合は、アプリケーション プロトコルとして XMPP を選択し、ネットワーク トランスポートとして (最新のブラウザーでは) Websocket または BOSH (古いブラウザーでは) を使用します。Stanza.io ( https://github.com/otalk/stanza.io ) のような Javascript 用の XMPP ライブラリを使用すると、両方がサポートされ、トランスポート層ではなく「XMPP」について考えるだけになります。接続するエンドポイントを指定する必要があるセットアップ時以外。
(チャットに「ただの Websocket」を使用することはできません。XMPP なしで Websocket を使用することはできますが、これが実際に意味することは、チャット用に独自のアプリケーション層プロトコルを発明していることであり、節約する可能性が高いということです。有用なプロパティ (セキュリティ、ID、拡張性など) を備えたものを作成するために既に費やされた作業を利用することで、多くの時間と頭痛の種となり、代わりに XMPP を使用することで既存のライブラリとサーバーが存在します。)