2011-01-22 15 views
78

Ho avviato il progetto in Rails 3 e ho bisogno di aggiungere notifiche (come quella di Facebook). Il modo migliore sarebbe utilizzare WebSocket per dispositivi di supporto come iPad, ma non riesco a trovare alcun buon strumento per implementarlo facilmente in Rails. Ho trovato Pusherapp, ma i prezzi sono schiaccianti, e inoltre non credo che fornire i miei dati a società terze sarebbe saggio. Quindi le cose necessarie:Miglior strumento Ruby on Rails WebSocket

  • Open Source
  • Una specie di canali di supporto
  • Helpers per Rails (e lavorare con Rails 3)

risposta

78

Se state cercando implementazione WebSocket pianura, poi EM-WebSocket è probabilmente migliore. Se vuoi supporto per fallback non flash (come vecchi telefoni o iPhone 3G) dovresti provare Socket.IO-rack.

Per le implementazioni full-optional come Pusher (con autenticazione e canali) si hanno due scelte: opensource Socky e Juggernaut.

Socky è un progetto rubino pura usando EM-WebSocket (come pusher) e ha alcune belle strumenti per Rails. D'altra parte, Juggernaut ha più cronologia (e più utenti), ma la nuova versione è stata riscritta su Node.JS (il client è ancora basato su ruby) e richiede Redis. Entrambi dovrebbero funzionare bene.

+4

Per chi fosse interessato, Juggernaut [ora è stato deprecato] (http://blog.alexmaccaw.com/killing-a-library). L'autore consiglia invece di utilizzare HTML5 [Eventi lato server] (http://www.html5rocks.com/en/tutorials/eventsource/basics/) e fornisce un bel commento nel link annuncio-deprecazione. –

+2

In seguito al commento di @ Jeff, Rails 4 fornisce il supporto integrato per SSE tramite il modulo ActionController :: Streaming. Documenti qui: http://api.rubyonrails.org/classes/ActionController/Streaming.html – user456584

+0

Dai un'occhiata a [Plezi] (https://github.com/boazsegev/plezi) - un framework Ruby che può funzionare come una versione stand-alone o all'interno della tua app Rails esistente. Sostituisce il server Rack con [server GRHttp] (https://github.com/boazsegev/GRHttp) in modo da poter eseguire Plezi per websocket o percorsi Html aggiuntivi e utilizzare Rails sullo stesso server e porta. In questo modo è facile salvare (o inviare) i dati ActiveRecord usando le websocket - È lo stesso codice. – Myst

9

Un'altra opzione che potrebbe soddisfare le vostre esigenze, ma è leggermente più esoterica, è quella di andare con uno degli appserver Jruby e utilizzare una delle implementazioni di websocket Java. Il molo (la base per il Trinidad) è noto per avere il miglior supporto per websocket disponibile. Un'altra opzione (che è piuttosto interessante) consiste nell'utilizzare un server di messaggistica con wrapper websocket per gli endpoint dei messaggi. Ad esempio, Torquebox (un appserver dedicato Jruby/Rails) ha il supporto integrato per HornetMQ, che a sua volta ha support for websockets.

19

Date un'occhiata a faye.

+4

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

+3

Faye ha un punteggio di popolarità superiore a dicembre 2012, secondo Ruby Toolbox - https://www.ruby-toolbox.com/categories/HTTP_Pub_Sub . –

+1

Fay usa effettivamente websocket e redis come juggernaut? – JohnMerlino