9

今日、私は次のセットアップのアイデアを思いつきました。およびnodejsとともにサーバーを作成します。Expressを使用すると、mongoに接続されたRESTfulAPIを作成します。BackboneJSまたは同様のものは、クライアントをそのRESTAPIに接続します。 これで、mongodb(つまり、対象となるデータ内のデータ)が変更されるたびに、socket.ioがクライアントにイベントを発生させ、変更されたデータへのコースを実行します。次に、クライアントは、RESTへの適切なAJAX要求をトリガーして、必要な場所で新しいデータを取得します。expresssocket.io

したがって、socket.io接続は同期トリガーのように動作します。それは訪問全体を通してそこにあり、そのようにセッションを管理することもできます。すべてのペイロードはhttp経由で送信されます。

長所:

  • Web以外のクライアントで使用するためのRESTAPI
  • 認証は完全にsocket.ioを介して行うことができます。トークンをRESTリクエストと一緒に送信するだけです。
  • RESTの利点を活用してください。
  • Redisのようなpub/subサービスでもうまく機能します

短所:

  • 純粋なsocket.ioを使用するよりもオーバーヘッドが大きくなります。

あなたはどう思いますか、私が考えていなかった大きな欠点はありますか?

4

3 に答える 3

6

@CharlieKeyに同意します。再リクエストするのではなく、更新されたデータを送信する必要があります。

これはまさにTowerが行っていることです。

Ajaxで再リクエストするトリガーとしてソケットを使用することの欠点は、接続されているすべてのクライアントがデータをフェッチする必要があることです。したがって、100人がサイトにいる場合、データが変更されるたびに100のHTTPリクエストが発生します。ソケット接続を再利用します。

于 2012-07-25T04:09:46.377 に答える
3

更新されたデータをsocket.ioイベントでプッシュする方が、最新のデータを再要求するよりも優れていると思います。さらに良いことに、変更されたデータをプッシュするだけで、回線を介して送信されるデータの量を減らすことができます。全体的には面白いアイデアですが。

于 2012-07-25T03:53:48.507 に答える
1

Now.jsはあなたが必要としていることをほぼ正確に実行するので、私はNow.jsを調べます。

クライアントとサーバー間で共有される名前空間を作成します。サーバーはクライアント上の関数を直接呼び出すことができ、その逆も可能です。

つまり、MongoDBとNode.jsを使用するという現在のインフラストラクチャの決定を主張する場合、そうでない場合は、高度なレプリケーションメカニズムが組み込まれた完全なWebサーバーとドキュメントデータベースであるCouchDBが存在します。

于 2012-07-26T08:43:18.197 に答える