Bestes Ruby on Rails WebSocket-Tool [geschlossen]

81

Ich habe das Projekt in Rails 3 gestartet und muss Benachrichtigungen hinzufügen (wie Facebook). Der beste Weg wäre, WebSocket für Support-Geräte wie das iPad zu verwenden, aber ich kann keine guten Tools finden, um es einfach in Rails zu implementieren. Ich habe Pusherapp gefunden, aber die Preise sind überwältigend, und ich halte es auch nicht für sinnvoll, meine Daten an Drittunternehmen weiterzugeben. Also brauchten die Dinge:

  • Open Source
  • Eine Art von Kanalunterstützung
  • Helfer für Rails (und Arbeiten mit Rails 3)
Jero Toryaki
quelle

Antworten:

80

Wenn Sie nach einer einfachen WebSocket-Implementierung suchen, ist EM-WebSocket wahrscheinlich am besten geeignet . Wenn Sie Unterstützung für Nicht-Flash-Fallback (wie alte Telefone oder iPhone 3G) wünschen, sollten Sie Socket.IO-Rack ausprobieren .

Für Implementierungen mit vollem Funktionsumfang wie Pusher (mit Authentifizierung und Kanälen) haben Sie zwei OpenSource-Optionen: Socky und Juggernaut .

Socky ist ein reines Ruby-Projekt, das EM-WebSocket (wie Pusher) verwendet und einige nette Tools für Rails enthält. Auf der anderen Seite hat Juggernaut mehr Verlauf (und mehr Benutzer atm.), Aber die neue Version wurde in Node.JS umgeschrieben (Client ist immer noch rubinbasiert) und erfordert Redis. Beides sollte gut funktionieren.

Bernard Potocki
quelle
4
Für Interessierte ist Juggernaut jetzt veraltet . Der Autor empfiehlt stattdessen die Verwendung von serverseitigen HTML5 -Ereignissen und gibt einen schönen Kommentar im Link zur Ankündigung von Verwerfungen.
Jeff Dickey
3
Als Folge von @ Jeffs Kommentar bietet Rails 4 integrierte Unterstützung für SSEs über das ActionController :: Streaming-Modul. Dokumente
user456584
Der Jod- HTTP / Websocket-Server ist eine C-Erweiterung von Ruby, die native Pub / Sub- sowie Redis-Konnektivität bietet. Es wird vom Plezi-Framework verwendet , das auch als Middleware in Rails verwendet werden kann.
Myst
9

Eine weitere Option, die möglicherweise Ihren Anforderungen entspricht, jedoch etwas esoterischer ist, besteht darin, einen der Jruby- Appserver zu verwenden und eine der Java-Websockets-Implementierungen zu verwenden. Jetty (die Basis für Trinidad ) bietet bekanntermaßen die beste verfügbare Unterstützung für Websockets. Eine andere Option (die ziemlich cool ist) ist die Verwendung eines Messaging-Servers mit Websocket-Wrappern für Nachrichtenendpunkte. Beispielsweise bietet Torquebox (ein dedizierter Jruby / Rails-Appserver) eine integrierte Unterstützung für HornetMQ, die wiederum Websockets unterstützt .

Ivar
quelle