La mejor herramienta WebSocket de Ruby on Rails [cerrado]

81

Comencé el proyecto en Rails 3 y necesito agregar notificaciones (como una de Facebook). La mejor manera sería usar WebSocket para dispositivos de soporte como iPad, pero no puedo encontrar ninguna buena herramienta 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 externa. Entonces cosas necesarias:

  • Fuente abierta
  • Soporte de algún tipo de canales
  • Helpers for Rails (y trabajar con Rails 3)
Jero Toryaki
fuente

Respuestas:

80

Si está buscando una implementación simple de WebSocket, probablemente EM-WebSocket sea ​​la mejor opción . Si desea soporte para respaldo sin flash (como teléfonos antiguos o iPhone 3G), debe probar Socket.IO-rack .

Para implementaciones con todas las funciones como Pusher (con autenticación y canales), tiene dos opciones de código abierto: Socky y Juggernaut .

Socky es un proyecto rubí puro que usa EM-WebSocket (como empujador) y tiene algunas herramientas interesantes para Rails. Por otro lado, Juggernaut tiene más historial (y más usuarios en cajeros automáticos), 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.

Bernard Potocki
fuente
4
Para aquellos interesados, Juggernaut ahora está en desuso . El autor recomienda utilizar HTML5 Server-Side Events en su lugar, y proporciona un buen comentario en el enlace de anuncio de desactivación.
Jeff Dickey
3
Como seguimiento al comentario de @ Jeff, Rails 4 proporciona soporte integrado para SSE a través del módulo ActionController :: Streaming. Documentos aquí: api.rubyonrails.org/classes/ActionController/Streaming.html
user456584
El servidor HTTP / Websocket de yodo es una extensión C de Ruby que proporciona conectividad pub / sub nativa y Redis. Es utilizado por el marco plezi , que también se puede utilizar como middleware en Rails.
Myst
9

Otra opción que puede 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 websockets de Java. Se sabe que Jetty (la base de Trinidad ) tiene el mejor soporte de websockets disponible. Otra opción (que es muy buena) es usar un servidor de mensajería con envoltorios websocket para los puntos finales de los mensajes. Como ejemplo, Torquebox (un servidor de aplicaciones dedicado de Jruby / Rails) tiene soporte integrado para HornetMQ, que a su vez tiene soporte para websockets .

Ivar
fuente