[解決済み] Xmpp対Websocket【終了しました
質問
これから、ほぼリアルタイムでチャットができるサイトを開発しようとしています。私は、それがxmppまたはwebsocketプロトコルを使用して実装することができることを知っています。私はまた、xmppプロトコルは1999年に開発され、私はそれが今では成熟しているはずです知っている。
- xmppがリアルタイムの会話を処理するのに適しているのであれば、websocketの必要性は何だったのでしょうか?
- 2つのプロトコルの主な違いは何ですか?
- また、どのような場合にどちらかを選ぶべきでしょうか?
どのように解決するのですか?
簡単に言うと、「両方」です。
XMPPは、リアルタイムチャットを行うためのアプリケーションプロトコルのセットです(その他にもいろいろあります)。XMPPには3つの主要なトランスポートバインディングがあります。
- TCP/IP、これは通常インターネット上でデバイス上のネイティブクライアントで使用されるものです。
- HTTP(BOSHと呼ばれる)、これはブラウザでXMPPを使用する際に従来から使われているものです(ブラウザのJavascriptアプリではTCP-IPが利用できないため)。
- Websocket: 最新のブラウザでXMPPを行うときに使用するものです。
つまり、ブラウザでチャットアプリケーションを開発する場合、アプリケーションプロトコルとしてXMPPを選び、ネットワークトランスポートとしてwebsocket(モダンブラウザ)またはBOSH(古いブラウザ)を使用することになります。Stanza.ioのようなJavascript用のXMPPライブラリを使用する場合 ( https://github.com/otalk/stanza.io XMPPは両方をサポートしているので、接続するエンドポイントを指定する設定時以外は、トランスポート層ではなく「XMPP」について考えるだけでよいのです。
(チャットのために「単なるウェブソケット」を使うことはできません - XMPPなしでウェブソケットを使うことはできますが、これが本当に意味するのは、チャットのために独自のアプリケーション層プロトコルを発明していることであり、代わりにXMPPにすることで既存のライブラリやサーバーがあり、有用な特性 (セキュリティ、アイデンティティ、拡張性など) を持つものを書くためにすでに行われている作業を活用することによって多くの時間や頭痛を節約しようとしているということです。)
関連
-
[解決済み】リンクリストの負の値の数でnegativeCntrを代入する
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】HTTPステータス500 サーブレットクラスのインスタンス化エラー [重複]。
-
[解決済み】「error: '.class' expected」の意味と修正方法について
-
[解決済み】「java -cp」と「java -jar」の違い?
-
[解決済み】Javaを使用するSelenium - ドライバの実行ファイルのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。
-
[解決済み】破損したjarファイル
-
[解決済み】Java LinkedListでNodesを使用する
-
[解決済み】Javaの".class expected "について
-
[解決済み] Java 8のインターフェイスメソッドで "final "が使えないのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】このコンパイルユニットは名前付きモジュールに関連しているため、名前付きパッケージeclipseを宣言する必要があります。
-
[解決済み】Java、"変数名 "を変数に解決することができない
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み] hibernate のプロパティが見つかりません。
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み】java 'jar'が内部コマンドまたは外部コマンドとして認識されない。
-
[解決済み] SQLエラー。0, SQLState: 08S01 通信リンクの失敗 [重複]。
-
[解決済み] "java.nio.charset.MalformedInputException" を避けるために、すべての包括的なCharset。入力の長さ= 1"?
-
[解決済み】フォルダに書き込もうとすると「java.nio.file.AccessDeniedException」が発生する件