バックグラウンドで別のサービスと非同期通信を行う Rails アプリケーション (JRuby) を作成する必要があります。ブラウザ セッションごとに 1 つの接続が必要です。(TCP 接続を開く必要はありませんが、セッションの終了後にリソースを解放する必要があります。) バックグラウンド サービスとの通信は、厳密な要求と応答ではありません。いつでも、サービスから rails アプリにメッセージが送信される可能性があります。
また、プロトコルを実装する必要があります。どうすればいいですか?Ruby on Rails 用の非同期フレームワーク (Twisted や Node.js など) はありますか? いくつかの出発点が必要です。
Python でクライアント側プロトコルの簡単な実装を既に作成しました。実際、完全なプロトコルは私が作成した (サーバーは JavaScript で記述されている) ため、プロトコルを完全に変更することができました。ただし、問題の性質上、非同期性を変更することはできません。
また、非同期の変更をブラウザーにプッシュするには、XHR ポーリング/WebSockets が必要です。そのための宝石/ハウツー/チュートリアルはありますか? リクエストをスリープに設定することはできません(リソース!)。
背景についてもっと知りたい場合: Rails アプリケーションはアクセシビリティ ツールです。それが通信するサービスは、実際には Web ページをロードしてレンダリングする Firefox アドオンです。非同期の性質は、(i) フレーム、ポップアップ ウィンドウ ( window.open()
、window.alert()
、...)、Rails アプリに伝達する必要がある DOM ツリーへの動的な変更、リダイレクト (フォーラムでポーズをとった後など) などに由来します。 RDF 処理に Jena (Java) フレームワークを使用する必要があるため、JRuby を使用します。