1

Rails でアプリケーションを開発しています。このアプリケーションでは、HTML テーブルを介してデータベースのコンテンツを編集するオプションをユーザーに提供しています。しかし、ユーザーが何かを更新すると、他のユーザーのビューが自動的に更新されるように、これを共同で行いたいと考えています。

データを保存/更新するために AJAX 関数を呼び出しています。

これにより、更新があるかどうかクライアントがサーバーに継続的に問い合わせるポーリングを使用できます。しかし、これでは非効率になります。

Web を検索すると、Web ソケットを使用できることがわかりました。そのために、Pusher や Slanger などのライブラリを使用できます。

しかし、これらのライブラリを使用して HTML テーブルを自動更新する方法については何も見つかりません。

任意の提案をいただければ幸いです。

4

2 に答える 2

2

ポーリングに興味がない場合は、pub/subサーバーがおそらく探しているものです。

Juggernautをチェックすることをお勧めします。これにより、クライアントブラウザは、ポーリングしないサーバーへの長時間の接続を確立できます。代わりに、サーバーがプッシュを送信すると、そのプッシュからのJavaScriptをクライアントページに直接レンダリングすることで応答します。

Juggernautの作成者は、 Hollaと呼ばれるサンプルプロジェクトを持っています。これは、探しているものをほぼ正確に実行します。つまり、サーバーにサブスクライブし、接続から読み取ると、クライアントが存在するページを更新します。Hollaはそれを使用してチャットサービスを作成しますが、同じコードを使用して、それを表示している他のユーザーのテーブルを更新できます。

于 2012-02-23T15:07:57.680 に答える
1

私はこれを使用していませんが、pusher.js の簡単なグーグルのように見えますが、これは十分に簡単です。ブラウザー側では、イベント ハンドラーを定義します。

サーバー側では、イベントをトリガーし、イベントと共にいくつかのデータ (作成されたレコードなど) を送信できます。これは、文字列またはハッシュのいずれかです。ハッシュは JSON に変換されます。

送信するデータの種類に関係なく、jquery などのライブラリを使用してテーブルに新しい行を作成できます (または必要な html を生成できます)。Rails コンテキストでは、render を使用して JSON の代わりに html 文字列を生成すると、パーシャルとテンプレートを使用できます。ここでも、jquery を使用して簡単に DOM に挿入できます。

プッシャー機能を統合する Ruby on Rails の gem もあります。プッシャーのチュートリアルを見る

おそらく、slanger のような他のライブラリも、多かれ少なかれ同じように機能すると思います。

于 2012-02-23T13:12:52.283 に答える