Socket.ioチャットアプリケーションとXMPPOpenfireチャットシステムを備えたNode.jsがあります。 XMPPをNode.jsとSocket.ioに置き換えるのを楽しみにしています。ただし、Socket.ioを使用したNode.jsには問題があるという話があります。サーバーがクラッシュしてオンラインに戻ると、ボトルネックシンドロームが発生するか、10,000人のオンラインユーザーを再接続できなくなる可能性があります。本当?
別の質問。どのような場合、XMPPはSocket.ioよりも適切であり、その逆も同様ですか?
XMPPはメッセージ指向ミドルウェア用のオープンスタンダードの通信プロトコルです (ウィキペディア)。
Node.jsは、ネットワークサービスを作成するためのJavaScriptベースの開発者ツールです。
これら2つのことは実際には比較されません。 socket.ioを使用してチャットアプリケーションを構築した場合、ボトルネックシンドロームが発生する可能性がありますが、アプリケーションコードに大きく依存します。
一般に、単純なブラウザベースのチャットを超えたい場合は、すべてのOSでXMPPクライアントをすぐに利用できるXMPP(別名Jabber)を真剣に検討します。
Node.jsの長所は、一般的なサーバーがあまり広く理解されていないerlang/Javaで記述されているXMPPサーバーではなく、一般的に理解されている言語(Javascript)で記述されていることだと思います。
サーバーの動作を完全に制御し、巧妙なモジュールを作成したい場合は、ノードが最適なソリューションになると思います。
Node.jsが失敗する可能性があるのは、1つのサーバーを超えて拡張する必要がある場合は、これをノードアプリに組み込む必要があるということです。 eJabberdとOpenfireはどちらもすぐに使用できるクラスタリングをサポートしていると思います。そのため、必要なのは、別のサーバーをオンラインにし、2つを構成して、相互に通信することです。
あなたへの私の全体的なアドバイスは、現在のXMPPシステムがあなたのためにうまく機能しているなら、私はそれを使い続けるだろうということです。
Miklが言ったように、XMPPはプロトコルであり、アプリケーションフレームワークではありません。
NodeJS上にSocketIOアプリケーションを構築するのと同じ方法で、NodeJS上にXMPPアプリケーションを構築できます。違いは、OpenFireとejabberdがしばらくの間使用され、テストされているのに対し、独自に構築するソリューションがあることです。それはあなたがそれをするべきであるという意味ではありません、しかしそれはあなたがそうするための良いビジネスケースを持っているべきであることを意味します。
インフラストラクチャを適切に設定している場合は、ほとんどすべてのフレームワークでこれを行うことができます。スパイク中のレイテンシーを軽減するには、リクエストの負荷を分散する必要があります。これは、どのシステムでも必要になる可能性があります。
Node.jsで動作するように設計されたxmppjsライブラリを確認することもできます。 http://xmppjs.prosody.im/