理論から実践に移り、RailsアプリケーションでWebSocket APIを使用できるツールについて説明します。 いくつかの可能なオプションがありますが、その中で私は次のことに注意します。
- Juggernaut( http://juggernaut.rubyforge.org/ )は、元々Rubyで記述され、その後node.jsで書き直されたソリューションです。 Redisはデータストレージに使用され、Railsアプリケーションと緊密に統合するための宝石があります。 Juggernautは、WebSocket APIを実装およびエミュレートするためのかなり多数の方法を提供します。たとえば、WebSocketのネイティブサポートもFlashオブジェクトをロードする機能もブラウザーで利用できない場合、必要な機能は定期的なAJAXリクエストを使用してエミュレートされます。これにより、システムの応答時間が増加し、負荷が増加しますサーバーに、しかし彼らが言うように、魚なしと癌は魚なしです。 私の状況でのJuggernautの欠点は、サーバーにredisとnode.jsをインストールする必要があり、それでも我慢できますが、FFでFlashが動作しなかったバグは、Juggernautに代わるものを探しに行った最後のわらでした。
- pusher.comは、WebSockets APIのすべての作業を処理し、RESTインターフェイスを使用してクライアントにメッセージを送信できるサービスです。 pusher.comの強みは、スケーラビリティと、インターネットリソースとのユーザーインタラクションを分析できることです。 残念ながら、私の場合、外部サービスの使用は困難であったため、 pusher.comを放棄する必要がありました。
- Socky-server( https://github.com/socky/socky-server-ruby )は、 EM-WebSocketおよびEM-HTTP-Clientに基づくRubyサーバーであり、WebSockets APIおよびFlashフォールバックをサポートします。 Railsとの統合には、gem socky-client-railsが使用されます。 ルーム、承認、および特定のユーザーへのメッセージ送信のサポートがあります。 このソリューションで特に気に入ったのは(特にJuggernautの後)そのままで機能することです。Gemfileにいくつかの依存関係を記述し、バンドルインストールを実行し、構成を生成し、サーバーを起動すると、開発を開始できます。 socky-serverを使用した簡単なチャットの例はsockydemo.imanel.orgにあり、ソースコードはhttp://github.com/socky/socky-exampleにあります 。
まとめると、WebSockets APIを使用すると、Webアプリケーションの対話性を高めてリソースをより便利にすることができ、サーバーをわずかにロードするだけで、SockyサーバーはRailsアプリケーションでWebSockets APIを使用する作業を簡単で簡単にします。