Escribo una sencilla aplicación de sala de chat en Rails 3.1 para fines de aprendizaje. Para empezar, tengo todos los modelos necesarios (mensajes, usuarios, habitaciones, etc.) y las cosas funcionan muy bien. Los clientes sondean el servidor cada minuto (por ejemplo) y reciben mensajes nuevos si tienen alguno.¿Es posible un largo sondeo con una aplicación Rails utilizando EventMachine?
Me gustaría cambiar el simple sondeo a largo sondeo y no puedo averiguar si esto se puede hacer en la misma aplicación o si tengo que crear otro servidor Push para el sondeo largo.
He leído mucho sobre EventMachine y he cambiado mi aplicación de rieles para usarla, ya que quería usar EventMachine para la mecánica de eventos. Pensé que el canal EventMachine sería útil para esto. Un cliente se conectaría y esperaría un mensaje en la sala de chat y solo recibiría un mensaje cuando se enviara uno a la sala.
Lo que no puedo entender es cómo puedo compartir la instancia de EventMachine :: Channel entre todas las conexiones de mis clientes. ¿Es este enfoque posible o voy en la dirección equivocada?
Si es posible, me gustaría una solución que pueda ejecutarse como una aplicación de rieles única alojada en Heroku.
No soy un experto en máquina de eventos, pero creo que es posible. Y no comparte el canal entre sus clientes, pero tiene uno por cliente y necesita crear algo encima de EM para enviar mensajes entre los diferentes usuarios. – Augusto
Sí, supongo que tengo un canal para cada cliente. ¿Dónde puedo almacenar todas las instancias de canal para que sea accesible desde un controlador que se invoca cuando alguien más envía un mensaje? – Oded