2

Rails 3 からのロング ポーリングに関する情報を見つけるのは難しいと思います。モバイル アプリが Rails JSON API から何かを要求し、それが外部 API から何かを要求する状況があります。外部サーバーは、約 30 秒後に変化する状態を保持し、Rails サーバーはその変化を待ってアプリケーションに通知する必要があります。私が見ているように、私たちの2つのオプション:

  1. モバイル アプリケーションは、/resource/status などを呼び出して Rails サーバーをポーリングします。Rails サーバーはこのリクエストを受信すると、外部サーバーのステータスをチェックし、ステータスが「十分に準備完了」であるかどうかを判断するモバイル アプリに返します。

  2. モバイル アプリケーションは Rails サーバーにリクエストを送信します。Rails サーバーは (何らかの方法で) 外部サーバーをポーリングし、ステータスが「十分に準備完了」のときはいつでも、モバイル アプリケーションにプッシュを送信します。

私はcronjobsのeveryge gemを理解していますが、これは「準備が整うまでX秒ごとにこれを行う」ようなものです...ポーリングは短時間でしか行われないため、cronjobにはあまり適していません。私が本当に必要としているのは、呼び出しを含むループsleepです。このメソッドは、リクエストごとに新しいスレッドを作成する必要がありますよね? Rails は、これらのマルチスレッドのニーズを満たすのに適していますか?

Rails とマルチスレッドが混在しないことを暗示するオンラインの記事がたくさんあります。その中には、デプロイしているサーバーに依存するものもありますが、これらの記事の有効性を判断するのは困難です。歳。

要するに、最も簡単なオプションと思われるオプション 1 を使用する必要があるかということです。または#2、モバイルアプリがプッシュを待っている間、サーバーがすべての作業を行っているという点で、どちらがより理にかなっていますか? #2 の場合、Rails アプリからこの種の長いポーリングを実行する最良の方法は何ですか?

4

0 に答える 0