2011-01-22 4 views
78

私はRails 3でプロジェクトを開始しました。私はFacebookのような通知を追加する必要があります。 iPadのようなサポートデバイスにWebSocketを使用するのが最善の方法ですが、Railsで簡単に実装できる優れたツールはありません。私はPusherappを見つけましたが、価格は圧倒的です。また、第三者の会社にデータを提供することは賢明ではないと私は考えています。だから、必要とするもの:ベストRuby on Rails WebSocketツール

  • オープンソース
  • チャンネルのサポートのいくつかの種類
  • Railsのためのヘルパー(とRailsでの作業は、3)

答えて

78

プレーンなWebSocket実装を検索する場合は、おそらくEM-WebSocketが最適です。旧式の携帯電話やiPhone 3Gなどの非フラッシュフォールバックのサポートをご希望の場合は、Socket.IO-rackをお試しください。

プッシャー(認証とチャンネルあり)のようなフル機能の実装の場合、SockyJuggernautという2つのオープンソースの選択肢があります。

Sockyは、プッシャーのようなEM-WebSocketを使用した純粋なルビープロジェクトであり、Railsには素晴らしいツールがいくつかあります。一方、Juggernautにはより多くの履歴がありますが、新しいバージョンはNode.JSに書き直されました(クライアントはまだルビーベースです)。Redisが必要です。両方とも正常に動作するはずです。

+4

興味のある人には、Juggernautは廃止されました(http://blog.alexmaccaw.com/killing-a-library)。著者は代わりにHTML5 [Server-Side Events](http://www.html5rocks.com/en/tutorials/eventsource/basics/)を使用することを推奨し、非推奨のアナウンスのリンクに素敵な解説を提供します。 –

+2

@ Jeffのコメントのフォローアップとして、Rails 4はActionController :: Streamingモジュールを介してSSEの組み込みサポートを提供しています。ここのドキュメント:http://api.rubyonrails.org/classes/ActionController/Streaming.html – user456584

+0

[Plezi](https://github.com/boazsegev/plezi) - Rubyフレームワークとしてスタンドアロンまたは既存のRailsアプリの内部にインストールすることができます。 Rackサーバーを[GRHttp server](https://github.com/boazsegev/GRHttp)に置き換えて、PleziをWebSocketまたは余分なHtmlルートとして実行し、同じサーバーとポート上でRailsを使用することができます。これにより、WebSocketを使用してActiveRecordデータを簡単に保存(または送信)できます。これはすべて同じコードです。 – Myst

10

EM-WebSocketは、おそらく最高のRubyの実装です。実際、Pusherappはその上に構築されています。これはEventMachineと統合されています。

Here's a tutorial使い方について

9

あなたのニーズを満たすかもしれないが、もう少し難解な別のオプションは、Jrubyアプリケーションサーバーのいずれかに行って、Java Webソケット実装の1つを使用することです。 Jetty(Trinidadのベース)は、最高のウェブソケットサポートを利用できることが知られています。別のオプション(かなり涼しい)は、メッセージエンドポイント用のwebsocketラッパーを備えたメッセージングサーバーを使用することです。たとえば、Torquebox(専用のJruby/Railsアプリケーションサーバー)には、HornetMQのサポートが組み込まれています。これは、support for websocketsです。

19

fayeをご覧ください。

+4

http://railscasts.com/episodes/260-messaging-with-faye – Kris

+3

Ruby Toolbox(https://www.ruby-toolbox.com/categories/HTTP_Pub_Sub)によると、Fayeの2012年12月現在の人気度は高くなっています。 。 –

+1

fayは実際にjuggernautのようにWebソケットを使用していますか? – JohnMerlino