2011-12-08 14 views
1

私は何かを開発するという概念化の段階にありますが、特定の機能についてはあまりよく分かりません。新しいタプルがDBに追加されたときに内容を自動的に更新する

フォームにDIVがあり、id = 'divComments'と呼ぶことができます。このdivには、特定のタイトルのすべてのコメントが含まれます。これは、データベースからすべてのデータを簡単に検索します。

ページが更新されると、このdivにはすべてのコメントが入力されます。別のユーザーがコメントを追加すると、他のすべてのユーザーは、ログオン(その時点以降)またはページの更新時にこのコメントを表示します。

データベースからこのdivをフィードし、データベースのリレーション/テーブルに何かが挿入されたときに自動的に更新されたらどうしますか?だから私は自分のページを開いた(私はちょうどそれを見て、それを見ていない)表示xを言うと他の誰かが特定のデータベーステーブルのタプルを追加することができますyを呼び出すと、私の部門は今xとyを示します。換言すれば、リフレッシュせずにデータベースからリアルタイムで更新することができる。

誰でもこのようなことをやり遂げる方法はありますか?

+0

データベースレベルでの変更をリッスンする方法はありません。ただし、データベースからレコードを定期的にリフレッシュするAjaxソリューションを実装できます。 – rdlowrey

+0

チャットルームはチャットルームのようにどのように実装されているのですか? –

+0

HTML自体はクライアントに送信されてから何もできません。それ以降の変更には、最新のデータを取得するためにAJAXの電話がかかっています。毎秒jsコールがあるかもしれません。私は "chatropolis"がそのような解決策を具体的にどのように実装しているかについて話すことはできません。 – rdlowrey

答えて

2

HTTPはステートレスです。アセットがHTTP接続を介してダウンロードを完了すると、接続は破棄され、サーバーはクライアントが次に何をしているのかについての知識がなくなります。

クッキーやセッションなどを使用してステートフルな動作を行う方法はありますが、新しいデータを取得するにはサーバーに新しい接続が必要です。

開発中の技術では、Webサーバーが利用可能になった瞬間(WebSocket、サーバー送信イベントなど)に新しいデータをクライアントに「プッシュ」することができますが、これらは依然としてほとんどの部分とブラウザのサポートは、まあまあです。

唯一実際に選択するのは、リフレッシュメタタグを使用してサーバーをポーリングすることです(非常に効率的ではありません)。サーバーをAJAXでポーリングします(Better、変更されたデータをフェッチするように設計できます新しいデータが利用可能になるまでアイドル状態の長時間続くAJAX接続を使用すると、データがダウンロードされ、接続が閉じられ、新しい接続が開かれてより多くのデータがアイドル状態になります(即時応答が可能になります) 、正しく設定するのは難しい)。

+0

のような何らかの双方向通信方法を検討したり、新しいデータが利用できるようになるまでアイドル状態を維持する長続きするAJAX接続を使用することができます。データがダウンロードされ、接続が閉じられ、新しい接続が開かれてより多くのデータがアイドルになる(即時の応答が可能になるが、正しく設定するのは難しい)。 ---------->これに関する研究のキーワードを教えてもらえますか?私はそれがまさに私が探しているものだと思う。 –

+0

長いポーリングでAJAXと呼ばれています。実際にはCometとしても知られていますが、これは実際にCometを実装するために使用できるいくつかのテクニックの1つです。 http://en.wikipedia.org/wiki/Comet_%28programming%29#Ajax_with_long_polling – GordonM

+0

彗星について簡単に研究しましたが、いくつか質問があります。私がそれを心から見ているのは、ファイルの変更日が変更されたかどうかを確認するためのサーバーページの無限ループです。もちろん、他のものがありますが、私が見ていることから、アップデートの中心です。無限ループは、CPUの詰まりを避けるためにおそらく100ミリ秒の少しの休憩を持っています。 –

関連する問題