1

ブラウザゲームのように。ユーザーが建物を建設し、タイマーが特定の日時に設定されて、建設が完了し、建物が生成されます。

デーモンのようなものを想像しましたが、それはどのように機能しますか? 私には、回転+ポーリングは進むべき道ではないようです。私はasync_observerを見ましたが、それはこのようなものに適していますか?

4

4 に答える 4

1

イベントを所有しているプレーヤーにのみ表示する必要がある場合は、モデルが更新されたステータスをオンデマンドで報告できます。

一方、スケジュールされた作成時から誰にでも見えるようにする必要がある場合、問題はもう少し興味深いものになります。

2つのことが必要だと思います。時間指定されたイベント (データベース テーブルが適しています) を入れることができるキューと、最後の実行以降に発生するようにスケジュールされたイベント (または差し迫っていると思われるイベント) を取得する、継続的に実行されるか、頻繁に再起動されるバックグラウンド プロセス。それらを実行します。

Rails wikiのオプションのリストを見ると、唯一の真のソリューションはまだないようです。それらの1つが法案に適合することを願っています。

于 2009-01-30T16:53:23.623 に答える
0

ある程度は、フロントエンドのロジックの量とモデルの量に依存します。何かが起こるまでの時間がわかっている場合は、ほとんどのロジックをフロントエンドに置いておくことができます。

私はあなたのモデルを使用して物事の状態を判断し、特定の要求に応じて、それが構築されているかどうかを確認できます。これにバックグラウンドワーカーが必要な理由がわかりません。

于 2009-01-30T13:52:21.353 に答える
0

UIを更新するために、AJAXを使用してタイマーを開始します(定期的なエグゼキューターを参照)。モデル側では、建物の created_at 列を追跡し、建設時間が経過した場合にのみ使用できるようにします。そうすれば、構築が完了したかどうかを確認するために数秒ごとにデータベースにアクセスする必要がなくなります。

于 2009-01-30T16:47:24.933 に答える