0

シナリオはこれです - 私はnode.jsで書いているフロントエンドWebサーバーを持っています。まだ書かれていない中間層の内部 API レイヤーがあります。internal-API は、データ ストア (たまたまリレーショナル データベース) と通信できる唯一のものです。

免責事項: 私は node.js の初心者です。

node.js は非同期でデータ アクセスを行いたいと考えています。これは、リスト全体が組み立てられるまで応答コールバックが開始されないため、Database.query.all のような呼び出しを非効率的にします。私が読んだドキュメントによると、代わりに、結果を一度に 1 つずつクライアントにストリーミングする方がよいでしょう。

ここで、node.js の非同期性を利用できるように、フロントエンドと中間層の http 内部 API を記述する方法を知りたいです。

問題は、「http で構造化データをストリーミングするにはどうすればよいか」ということだと思います。それが私がサポートを求めている内部 API の機能だと思います。

するべきか:

  • ID のリストを要求するフロントエンドを取得してから、それぞれ 1 つの要求をバックエンドに発行し​​ますか? 粗雑でおしゃべりに聞こえますが、リクエストが希望する順序で返されるという保証がないため、フロントエンドにすべてが戻るまで待つ必要があります..?
  • データのページの内部 API に対して一連のリクエストを作成するフロントエンドを取得し、各チャンクをストリーム セグメントとして扱います...?
  • 最初の画面の価値に十分なデータのみを取得してから、後続のチャンクを要求し、到着したときにリストの最後にそれぞれを書き込みますか?
  • 何か賢い!?

(注: 「データベースと直接通信できるように中間層を削除してください」とは言わないでください。これはオプションではありません)

4

1 に答える 1

0

「ストリーミング」とは正確に何を意味するのかわかりません。あなたが与えるアイデアから、 HTTPサーバーのプッシュまたはロングポーリングテクニックとして解釈されるか、単に後続のXHRリクエストを作成する可能性があります。

ノードを使用しているので、必要なときにいつでもデータをブラウザーに実際にプッシュできるSocket.ioをお勧めします。

XHR を使用することを選択した場合は、ブラウザーに次に何を要求するかを指示するだけです。

それがあなたに合わず、サーバープッシュまたはロングポーリングを使用したい場合は、response.write()が適しているようです。ただし、リクエストのタイムアウトなどの問題が発生する可能性があります。

于 2012-04-04T15:15:35.633 に答える