7

チャットアプリケーションを構築するための最適なスタックがわかりません。現在、私は2つの主なオプションを考えています。

  • フェイスブック竜巻
    • 短所:メインのチャットプロトコルxmppを使用せず、pubsubhubbubを使用します
    • 長所:開発のシンプルさが本当に気に入っています(Webサーバー+ Webフレームワーク)。pubsubhubbubも、xmppよりもプロトコルとして単純なようです。そして私はPythonを知っています
  • xmpp + bosch、punjab、ejabberd
    • 短所:erlangがわからない; 全体的に開発するのは少し難しいようです
    • 長所:xmppプロトコルを使用します

チャットアプリには次のものが必要です。

  • プライベートメッセージ
  • パブリックルーム
  • 個室
  • 部屋のチャット履歴(永久ではなく、最後のn個のメッセージのみ)
  • html埋め込み
  • チャットルームへのURL

どちらのオプションもスケーラブルに見えるので、それほど心配する必要はありません(Amazonのec2でもアプリを実行することを考えています)。トルネードを使用してxmppサーバーを構築するプロジェクトがあることは知っていますが、本番環境で使用する準備ができておらず、期限はそれほど長くありません。基本的に私の主な心配事は開発のしやすさですが、後でpubsubhubbubを使用してチャットアプリを開発したことを後悔していますが、RESTがSOAPに取って代わったため、PubSubHubbubが最終的にXMPPに取って代わる可能性があることをどこかで読みました。

4

5 に答える 5

11

XMPPを選択してください。

箱から出して、ejabberdはすべての要件をサポートしています。erlangを表示したり、ejabberdのカスタムモジュールを作成したりする必要はありません。また、Strophejsを使用すると、ブラウザーのXMPP(これは明らかに実行していることです)は優れています。

XMPPを置き換えるpubsubhubbubについての最後の質問については、それを当てにしないでください。XMPPは、10年以上前の、堅実なオープンソースであり、クライアントとサーバーの両方で独自の相互運用可能な実装であり、エレガントであるため、なくなることはありません。

そして、XMPPの目的であるチャットアプリケーションを開発しています。

于 2010-03-18T10:50:31.177 に答える
4

Facebook TornaoはPubSubHubbubをまったく使用していません!

XMPPを選択してください。これは、探しているものに合わせて設計されています。Tornadoはそのために特別に設計されたのではなく、一般的に長いポーリング要求のために設計されました。

Punjabを使用する必要はありません。ejabbedhttp-bindモジュールは現在かなり良い仕事をしています。また、Apacheを使用するWebアプリを作成するときにCを学ぶ必要がないのと同じように、Erlangを学ぶ必要はありません:)Aristochatのようなものをチェックしてください。遊ぶ必要があるのは、XMPPサーバーとチャットルームの構成、そしてクライアント側(ブラウザー内)のJavascriptだけです。

于 2010-03-18T11:31:45.557 に答える
1

XMPPを介したフェデレーションは必要ないが、すぐに使用できるスケーラビリティとともにプロトタイプを作成して迅速にデプロイしたい場合は、LiftWebフレームワークのチャットサーバーの例を1ページのコードで確認してください。

于 2010-07-19T23:54:04.607 に答える
0

PubSubHubbub(PuSH)は、そもそもチャットアプリを対象としたものではありませんでした。「IMfortheWeb」と呼ばれることもあります。このスライドをご覧になることをお勧めします:igrigorikによるリアルタイムWeb用のリアルタイムRuby

問題は、実際にどのくらいリアルタイムで取得したいのかということです。速度が必要な場合は、XMPPが最適なオプションです。(500ms)PuSHは、フィードとその中継方法によって異なります。PuSHを使用すると、コンテンツがサブスクライバーに到達するまでに合計4つのネットワークホップが発生することを忘れないでください。

さらに大きな問題は、PuSHがHTTPPostに依存していることです。最終的にPuSHに基づいてチャットアプリを設計し、後の段階でそれを他のデバイスで利用できるようにしたい場合、またはデスクトップアプリケーションとしても、XMPPを使用して同じコンテンツを中継する必要があります。あなたが失うことになる他の場所は、チャットアプリのユーザーが自分の選んだ他のIMからログインするのが非常に難しいということです。

于 2010-03-21T04:43:03.723 に答える
0

WebSocketでRESTAPIを使用して、パブリッシャー/サブスクライバーアーキテクチャを実装できます。

AtmosphereソケットとSwaggerソケットは、 JerseyRESTAPIにプラグインしてこれを実現できる優れたJavaフレームワークです 。

Atmospehreの作成者であるjfarcandのブログには、これらのテクノロジーで構築されたチャットアプリケーションの一例があります。

于 2012-07-14T22:08:06.217 に答える