web-dev-qa-db-ja.com

Socket.ioモジュールを使用したNode.jsとXMPP-長所と短所

Socket.ioチャットアプリケーションとXMPPOpenfireチャットシステムを備えたNode.jsがあります。 XMPPをNode.jsとSocket.ioに置き換えるのを楽しみにしています。ただし、Socket.ioを使用したNode.jsには問題があるという話があります。サーバーがクラッシュしてオンラインに戻ると、ボトルネックシンドロームが発生するか、10,000人のオンラインユーザーを再接続できなくなる可能性があります。本当?

別の質問。どのような場合、XMPPはSocket.ioよりも適切であり、その逆も同様ですか?

22
user739217

XMPPはメッセージ指向ミドルウェア用のオープンスタンダードの通信プロトコルです (ウィキペディア)。

Node.jsは、ネットワークサービスを作成するためのJavaScriptベースの開発者ツールです。

これら2つのことは実際には比較されません。 socket.ioを使用してチャットアプリケーションを構築した場合、ボトルネックシンドロームが発生する可能性がありますが、アプリケーションコードに大きく依存します。

一般に、単純なブラウザベースのチャットを超えたい場合は、すべてのOSでXMPPクライアントをすぐに利用できるXMPP(別名Jabber)を真剣に検討します。

13
mikl

Node.jsの長所は、一般的なサーバーがあまり広く理解されていないerlang/Javaで記述されているXMPPサーバーではなく、一般的に理解されている言語(Javascript)で記述されていることだと思います。

サーバーの動作を完全に制御し、巧妙なモジュールを作成したい場合は、ノードが最適なソリューションになると思います。

Node.jsが失敗する可能性があるのは、1つのサーバーを超えて拡張する必要がある場合は、これをノードアプリに組み込む必要があるということです。 eJabberdとOpenfireはどちらもすぐに使用できるクラスタリングをサポートしていると思います。そのため、必要なのは、別のサーバーをオンラインにし、2つを構成して、相互に通信することです。

あなたへの私の全体的なアドバイスは、現在のXMPPシステムがあなたのためにうまく機能しているなら、私はそれを使い続けるだろうということです。

11
James C

Miklが言ったように、XMPPはプロトコルであり、アプリケーションフレームワークではありません。

NodeJS上にSocketIOアプリケーションを構築するのと同じ方法で、NodeJS上にXMPPアプリケーションを構築できます。違いは、OpenFireとejabberdがしばらくの間使用され、テストされているのに対し、独自に構築するソリューションがあることです。それはあなたがそれをするべきであるという意味ではありません、しかしそれはあなたがそうするための良いビジネスケースを持っているべきであることを意味します。

インフラストラクチャを適切に設定している場合は、ほとんどすべてのフレームワークでこれを行うことができます。スパイク中のレイテンシーを軽減するには、リクエストの負荷を分散する必要があります。これは、どのシステムでも必要になる可能性があります。

4
Nick Campbell

Node.jsで動作するように設計されたxmppjsライブラリを確認することもできます。 http://xmppjs.prosody.im/

3
user847585