2010-05-07 17 views

Respuesta

2

estoy escribiendo una aplicación web algo no trivial utilizando Rails (3) y Cramp juntos en este momento. No tengo ninguna experiencia con Node.js, y recién comencé a utilizar Cramp tal como es, pero parece prometedor. ¡Y en mi opinión, poder usar Ruby es una gran ventaja! (Empecé con Tornado (Python) y no podía soportar el idioma. Lo siento, los fanáticos de Python!)

El inconveniente es que he encontrado muy, muy poco material de terceros en Cramp. Supongo que no es sorprendente teniendo en cuenta lo nuevo que es, pero estás más o menos por tu cuenta. Si necesita su mano, probablemente no debería usar Cramp.

3

Jugué con calambres y raíles hace un tiempo. Estaba intentando crear una vista con actualizaciones dinámicas usando WebSockets para canalizar datos entre los clientes y el servidor. Funcionó perfectamente con Chrome, pero Safari 5 y FF implementan una versión más reciente del protocolo de websocket y Cramp no, así que no pude lograr que funcionara allí.

Estoy de acuerdo en que usar Ruby para toda la pila es bueno, pero me doy cuenta de que Cramp en este momento se está quedando ligeramente por detrás de la curva en algunos aspectos.

Decidí dar un mordisco a la bala y usar node.js (y el paquete SocketIO) para mis cosas.

¡Buena suerte!

+0

sólo un bache en este caso, el desarrollo del calambre parece haberse detenido hace un tiempo (alrededor de 2 años) - que ha habido una solicitud de extracción (o dos) aceptaron hace un año, y eso es todo. - No puedo decir nada más sobre el estado del código, porque la falta de actividad me ha alejado. - Todavía puedo probarlo, a menos que obtenga otra solución factible primero. – ocodo

1

Echa un vistazo a diferentes repos de calambres. Los WebSockets se están moviendo como objetivo, y vivir al límite no es tan fácil. github.com/maccman/cramp horquilla funciona con la implementación de resnobles websockets, mientras que el calambre original no está actualizado y en refactorización. También eche un vistazo a eventmachine-websockets. De todos modos, prepárese para usar thin + eventmachine en el servidor. Con los calambres debe adelgazar en modo de producción, los calambres aún no son buenos.

5

Puedo hablar más desde el otro lado (Node.js). Acabo de escribir una gema que se integra con Rails 3 que utiliza un back-end de Node.js para escuchar mensajes Redis PUBSUB y actualiza el front-end de Rails en consecuencia.

Socket.IO + Node no es difícil de integrar con una aplicación de Rails (especialmente si se trabaja con jQuery), pero dependiendo de su base de navegador de destino (como IE7), puede ser complicado trabajar en todos los casos, a saber, debido a algunos casos extraños al usar Flash Socket como una alternativa (generalmente donde WebSockets no funcionan).

Dicho esto, recomiendo Node.js + Socket.IO. Es súper liviano con muchas opciones y flexibilidad para extenderse y hacer casi cualquier cosa que desee. En mi opinión, Rails es un marco web fantástico para construir aplicaciones más grandes que necesitan un front-end computacionalmente pesado. No elegiría usarlo para aplicaciones pequeñas impulsadas por eventos simplemente porque usa tanta memoria solo para el marco. Amo Ruby/Rails, pero cuando se trata de necesitar algo para el procesamiento de eventos/manejo de mensajes rápido y limpio, Node tiene mi voto.

Si necesita ejemplos más concretos, mi proyecto Kthxbye (un clon Resque-esque) se comunica con Redis, que a su vez es escuchado por Node.JS, que a su vez puede actualizar una aplicación web.

Plugin: http://github.com/plukevdh/kthxbye (ver: http://github.com/plukevdh/kthxbye/blob/master/lib/generators/kthxbye/templates/kthxbye.js)

nodo backend: http://github.com/plukevdh/kthxbye-node (ver: http://github.com/plukevdh/kthxbye-node/blob/master/poll.js)

(. Disculpas por la falta total de documentación sobre el proyecto de nodo)

0

¿Por qué te limitas a Cramp en el lado rubí?

Puede usar Rails también para aplicaciones en tiempo real con websocket-rails.

También es posible usar los marcos en tiempo real tales como Plezi o Volt ... tanto Volt y Plezi funcionan mejor que calambre, en mi opinión (pero yo soy parcial, como escribí el marco Plezi).

Aquí es un simple servidor de WebSocket eco con Plezi:

require 'plezi' 

class EchoCtrl 
    def index 
     redirect_to 'http://www.websocket.org/echo.html' 
    end 
    def on_message data 
     # to broadcast the data add: 
     # broadcast :_send_message, data 
     _send_message data 
    end 
    def _send_message data 
     response << data 
    end 
end 

listen 

# you can add, a socket.io route for JSON with socket.io 
route '/socket.io', EchoCtrl 
route '/', EchoCtrl 

# exit the irb console to finish the setup and start the Plezi server 
exit 
Cuestiones relacionadas