2011-01-22 16 views
78

Comencé proyecto en Rails 3 y necesito agregar notificaciones (como Facebook una). La mejor manera sería usar WebSocket para dispositivos de soporte como iPad, pero no puedo encontrar ninguna herramienta buena para implementarlo fácilmente en Rails. Encontré Pusherapp, pero los precios son abrumadores, y tampoco creo que sea prudente proporcionar mis datos a una empresa de terceros. Así las cosas necesarias:Mejor herramienta Ruby on Rails WebSocket

  • Open Source
  • Algún tipo de canales de soporte
  • Ayudantes de rieles (y trabajar con Rails 3)

Respuesta

78

Si está buscando la implementación simple de WebSocket, entonces EM-WebSocket es probablemente el mejor. Si desea soporte para la recuperación sin flash (como teléfonos antiguos o iPhone 3G), debe intentar Socket.IO-rack.

Para implementaciones completas como Pusher (con autenticación y canales) tiene dos opciones de fuente abierta: Socky y Juggernaut.

Socky es un proyecto de rubí puro que usa EM-WebSocket (como empujador) y tiene algunas buenas herramientas para Rails. Por otro lado, Juggernaut tiene más historial (y más usuarios de atm.) Pero la nueva versión se reescribió en Node.JS (el cliente todavía está basado en ruby) y requiere Redis. Ambos deberían funcionar bien.

+4

Para los interesados, Juggernaut [ahora ha quedado en desuso] (http://blog.alexmaccaw.com/killing-a-library). El autor recomienda utilizar HTML5 [Server-Side Events] (http://www.html5rocks.com/en/tutorials/eventsource/basics/) en su lugar, y proporciona un buen comentario en el enlace de desaprobación-anuncio. –

+2

Como seguimiento del comentario de @ Jeff, Rails 4 proporciona compatibilidad integrada para SSE a través del módulo ActionController :: Streaming. Documentos aquí: http://api.rubyonrails.org/classes/ActionController/Streaming.html – user456584

+0

Eche un vistazo a [Plezi] (https://github.com/boazsegev/plezi) - un marco Ruby que puede funcionar como una independiente o dentro de su aplicación Rails existente. Reemplaza su servidor Rack con el [servidor GRHttp] (https://github.com/boazsegev/GRHttp) para que pueda ejecutar Plezi para websockets o rutas Html adicionales, así como usar Rails en el mismo servidor y puerto. De esta manera, es fácil guardar (o enviar) datos de ActiveRecord usando websockets: es todo el mismo código. – Myst

9

Otra opción que podría satisfacer sus necesidades pero es un poco más esotérica es ir con uno de los servidores de aplicaciones Jruby y usar una de las implementaciones de Java websockets. Jetty (la base para el Trinidad) es conocido por tener el mejor soporte de websockets disponible. Otra opción (que es muy buena) es usar un servidor de mensajería con envoltorios de websocket para puntos finales de mensajes. Como ejemplo, Torquebox (un servidor de aplicaciones Jruby/Rails dedicado) tiene soporte incorporado para HornetMQ, que a su vez tiene support for websockets.

19

Eche un vistazo a faye.

+4

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

+3

Faye tiene una calificación de popularidad más alta a partir de diciembre de 2012, según Ruby Toolbox - https://www.ruby-toolbox.com/categories/HTTP_Pub_Sub . –

+1

¿Realmente Fay usa websockets y redis como juggernaut? – JohnMerlino