私は、ほぼリアルタイムのチャットを持つWebサイトを開発しようとしています。 xmppまたはwebsocketプロトコルを使用して実装できることを知っています。また、xmppプロトコルが1999年に開発されたことは知っていますが、最近では成熟しているはずです。一方、websocketプロトコルは2011年に開発されました。
短い答えは「両方」です。
XMPPは、リアルタイムチャット(およびその他の多くのこと)を実行するためのアプリケーションプロトコルのセットです。その後、何らかの方法でネットワークを介してトランスポートする必要があるため、トランスポートバインディングが必要です。 XMPPには3つの主要なトランスポートバインディングがあります-
したがって、ブラウザーでチャットアプリケーションを開発する場合、アプリケーションプロトコルとしてXMPPを選択し、ネットワークトランスポートとしてwebsockets(最新のブラウザー)またはBOSH(古いブラウザー)を使用します。 Stanza.io( https://github.com/otalk/stanza.io )のようなJavascriptにXMPPライブラリを使用する場合、両方をサポートし、「XMPP '接続するエンドポイントを指定する必要があるセットアップ時以外のトランスポート層ではありません。
(チャットに「単なるwebsockets」を使用することはできません-XMPPなしでwebsocketsを使用できますが、これは本当にあなたがチャット用の独自のアプリケーション層プロトコルを発明していることを意味します、そしてあなたは節約するつもりです既に有用なプロパティ(セキュリティ、ID、拡張性など)を備えたものを作成する作業に活用し、代わりにXMPPを使用して既存のライブラリとサーバーが存在する作業を利用することによる多くの時間と頭痛。
基本的に、2つの異なるものを互いに比較します。 XMPPはアプリケーションプロトコルであり、WebSocketsはトランスポートプロトコルです。
XMPPを使用すると、時間を大幅に節約できると思います。ただし、最適な方法で機能を実装する自由は失われます。アプリケーションが1対1のメッセージングとフレンドリスト機能のみを使用し、将来追加するものについて明確な計画がない場合、WebSockets +は実行可能なソリューションになります。一方、アプリケーションがマルチパーティメッセージングやピアツーピアメディアセッションなどの他のXMPP拡張機能の恩恵を受ける場合、XMPPを使用すると、そのような機能を実装するのに多くの時間が必要になるためです。