2

Node.jsを使用して、データベース(この場合はsqlite)で一連のクエリを実行しているとします。これらのクエリの処理には時間がかかる場合があり、結果が届いたときにクライアントを更新する必要があります。つまり、結果をクライアントに非同期でプッシュしてから、DOMを更新する必要があります。

Faye(または他のコメットシステム)、JavaScriptテンプレート、そしておそらくKnockout.jsを使用して、これを行う方法をまとめることができると思います。しかし、この種のことを行うためのフレームワークまたはツールはすでにありますか?

それとも、これは間違ったアプローチですか?

4

1 に答える 1

4

以前のプロジェクトでは、変更をクライアントに簡単にプッシュできるSocket.IOを使用しました。例は次のようになります。

サーバーコード:

socket.emit('ranQuery', { info: 'Info From Server!' });

クライアントコード:

socket.on('ranQuery', function(data) {
    console.log(data.info); // would output "Info From Server!"
    // update the DOM with the new information
} 

彼らのウェブサイトにはたくさんの実例があります。他のノード パッケージと同じようにインストールできますnpm install socket.io


アップデート:

あなたが投稿したリンクを開いて読んだ後、あなたのアプローチは正しいと思います。Faye について聞いたことはありませんが、Socket.IO (サーバーからクライアントにオブジェクトを送信する) と同様のことを行うようで、KnockoutJS がデータ バインディングを処理します (モデルを更新すると、ページでも更新されます)。 )。問題が発生した場合は、ここに質問を投稿してください。

私が Socket.IO を持ち出した唯一の理由は、使いやすさとドキュメント化でした。最近、AngularJS + Socket.IO を使用してプロジェクトを開始しました。サーバーからの頻繁な更新に基づいてクライアント側で多くの変更を行う場合は、AngularJSも見て、Web サイトの例をいじる必要があるかもしれません。

これがうまくいくと思われる場合は、このブログ投稿 ( http://briantford.com/blog/angular-socket-io.html ) にアクセスして、AngularJS を Socket.IO とうまく連携させるための非常に優れたガイドを参照してください。

于 2012-10-11T00:36:35.177 に答える