1

ゲームを実装するRailsアプリを持っているので、プレーヤーはゲームページでブラウザーを開いたままにすることが期待されます。プレーヤーのアランが自分でアクションを実行するとき、私はAJAXリクエストを使用して、アランが表示しているゲームページを更新して新しい状態を反映します。ただし、別のプレーヤー(Bob)がアクションを実行する場合、変更をAlanのビューにプッシュするメカニズムがありません(または必要ありません)。

Alanのページで定期的にRailsサーバーをポーリングして、最後のリロード以降に変更があったかどうかを確認し、変更がない場合は(ページ全体のGETまたはAJAX呼び出しを介して)ページをリロードしたいと思います。キャッシュとプロキシをうまく活用するために、定期的にHTTP HEADリクエストを発行し、Railsに最後の変更のタイムスタンプ(DBから簡単に入手可能)を計算させ、最後の変更で応答することでこれを実行したいと思います。 -変更されたヘッダー。次に、クライアント側にそのタイムスタンプを処理させます。

どうすればこれを行うことができますか?

4

2 に答える 2

1

必要なものの多くは Rails に組み込まれています。

Rails キャッシュ ガイドのConditional GETSを参照してください。

これを正しく設定すると、ブラウザとサーバーの間ですべてが行われます。

非常に熱心な場合は、Rails スタックの前にリバース プロキシを配置して、キャッシングのレイヤー全体を追加することができます。

于 2010-04-14T10:37:58.800 に答える
0

変更を Alan のビューにプッシュするメカニズムがありません (または必要ありません)。

他のプレイヤーのビューをリアルタイムで更新したくないのはなぜですか?

これは、 ajaxmessagingのような長いポーリングAJAX リクエストで実現できます(やった?)。または、Flash を武器として選択する場合は、Juggernautをオプションにすることもできます。nginx_http_push_moduleも非常に有望です。全体の取引は一種の混乱であると言っても過言ではないので、HTML5 とそのWebSocketsへの驚くほど迅速な移行を期待しましょう。

于 2010-04-14T10:48:14.830 に答える