2010-11-22 19 views
8

He creado un Asynchronous version of Rails 3 que me gustaría integrar con una implementación de WebSocket.Integración de WebSockets con raíles con Rack y Event Machine

Estoy usando EventMachine, Ruby 1.9, Fibras y varias bibliotecas con sabor a em, según lo documentado por el malvado Ilya Grigorik.

He estado buscando en em-websocket como el controlador para las conexiones WebSocket pero no estoy seguro del mejor enfoque para conectar esto a la aplicación Rails.

Idealmente, esto funcionaría de manera similar a Node.js con Express y Socket.io - conexiones entrantes deben ser detectados y enviados al controlador de WebSocket o los carriles regulares pila como se indica por las cabeceras HTTP & etc .

TL; DR manejador

  • WebSocket que se conecta a una aplicación Rails existente
  • se envían de forma transparente las peticiones entrantes a WebSocket puntos finales en la aplicación
+1

puede considerar dividir su pregunta en una serie de viñetas más específicas que desee contestar. – kanaka

Respuesta

1

Tal vez intente socky? Por ahora es mejor y es bastante fácil de integrar con Rails (tanto 2 como 3)

+0

Genial, tendrá un aspecto –

+0

Socky es bastante genial, pero no está del todo integrado en la pila de Rails de la misma forma que Express y Socket.io. Podría ser capaz de usarlo como base de algo más herméticamente enrollado en Rails. –

2

Consulte Skinny.

Tendrá que utilizar Thin, pero puede actualizar una solicitud HTTP en mitad de la zancada. Lo uso en aplicaciones de Sinatra, pero debería usarse con la misma facilidad en Rails.

5

Sé que esta pregunta es antigua pero espero que esta respuesta ayude a las que se han dirigido aquí desde google.

Estoy trabajando en una gema que cumple los dos criterios principales en la pregunta original. La gema se llama websocket-rails y se ha desarrollado desde cero para hacer que el uso de WebSockets dentro de una aplicación Rails caiga muerto. Finalmente está en una versión estable, pero hay mucha más funcionalidad que creo que necesita.

Actualmente, el manejo de eventos es muy básico. Existe un archivo events.rb en el que se asignan eventos del lado del cliente a acciones del controlador similares al archivo routes.rb. Todas las solicitudes al /websocket se transfieren al servidor WebSocket incorporado sin la necesidad de un proceso de servidor por separado.

El objetivo más ambicioso del proyecto es mover eventualmente Rails a un patrón MVC más tradicional donde los eventos en el navegador del cliente burbujean hasta el servidor para procesar y actualizar un modelo activará automáticamente eventos en el cliente para actualizar el renderizado representación de ese modelo.

Cualquier comentario sería apreciado.