1. ホーム
  2. java

[解決済み] Xmpp対Websocket【終了しました

2022-02-09 18:13:57

質問

これから、ほぼリアルタイムでチャットができるサイトを開発しようとしています。私は、それがxmppまたはwebsocketプロトコルを使用して実装することができることを知っています。私はまた、xmppプロトコルは1999年に開発され、私はそれが今では成熟しているはずです知っている。

  1. xmppがリアルタイムの会話を処理するのに適しているのであれば、websocketの必要性は何だったのでしょうか?
  2. 2つのプロトコルの主な違いは何ですか?
  3. また、どのような場合にどちらかを選ぶべきでしょうか?

どのように解決するのですか?

簡単に言うと、「両方」です。

XMPPは、リアルタイムチャットを行うためのアプリケーションプロトコルのセットです(その他にもいろいろあります)。XMPPには3つの主要なトランスポートバインディングがあります。

  1. TCP/IP、これは通常インターネット上でデバイス上のネイティブクライアントで使用されるものです。
  2. HTTP(BOSHと呼ばれる)、これはブラウザでXMPPを使用する際に従来から使われているものです(ブラウザのJavascriptアプリではTCP-IPが利用できないため)。
  3. Websocket: 最新のブラウザでXMPPを行うときに使用するものです。

つまり、ブラウザでチャットアプリケーションを開発する場合、アプリケーションプロトコルとしてXMPPを選び、ネットワークトランスポートとしてwebsocket(モダンブラウザ)またはBOSH(古いブラウザ)を使用することになります。Stanza.ioのようなJavascript用のXMPPライブラリを使用する場合 ( https://github.com/otalk/stanza.io XMPPは両方をサポートしているので、接続するエンドポイントを指定する設定時以外は、トランスポート層ではなく「XMPP」について考えるだけでよいのです。

(チャットのために「単なるウェブソケット」を使うことはできません - XMPPなしでウェブソケットを使うことはできますが、これが本当に意味するのは、チャットのために独自のアプリケーション層プロトコルを発明していることであり、代わりにXMPPにすることで既存のライブラリやサーバーがあり、有用な特性 (セキュリティ、アイデンティティ、拡張性など) を持つものを書くためにすでに行われている作業を活用することによって多くの時間や頭痛を節約しようとしているということです。)