私は、Rails 3.1の簡単なチャットルームアプリケーションを学習目的で作成しています。 私はすべての必要なモデル(メッセージ、ユーザー、部屋など)を持っており、物事は素晴らしいです。 クライアントは毎分サーバーをポーリングし(たとえば)、新しいメッセージがあれば取得します。EventMachineを使用してRailsアプリケーションで長いポーリングが可能ですか?
シンプルポーリングをロングポーリングに変更したいのですが、これを同じアプリで行うことができないのか、ロングポーリング用に他のプッシュサーバーを作成する必要があるのか分かりません。
私はEventMachineについて多くのことを読んで、私はEventMachineをイベントドリブンメカニックスに使用したいと思っていたので、ユーザーにそれを変更しました。私はEventMachineチャンネルがこれに便利だと思いました。 クライアントは、チャットルームに接続してメッセージを待つことになり、メッセージがルームに送信されたときにのみメッセージを受信します。
私が理解できないことは、すべてのクライアント接続の間でEventMachine :: Channelインスタンスを共有する方法です。 このアプローチは可能ですか、それとも間違った方法ですか?
可能であれば、私はHerokuでホストされている1つのレールアプリケーションとして実行できるソリューションを希望します。
私はイベントマシンの専門家ではありませんが、可能であると思います。また、クライアント間でチャネルを共有することはありませんが、クライアントごとに1つのチャネルがあり、異なるユーザー間でメッセージを送信するにはEMの上に何かを構築する必要があります。 – Augusto
はい、すべてのクライアントにチャンネルがあります。 他の誰かがメッセージを送信したときに呼び出されるコントローラからアクセスできるように、これらのすべてのチャネルインスタンスをどこに保存できますか? – Oded