2009-01-13 13 views
5

Me gustaría implementar una sala de chat escalable en rieles usando AJAX. Sé por investigación que la única escalabilidad ocurre con un impulso en el servidor.Push-on Rails en el lado del servidor

Mis dos preguntas son:

1) En un servidor de chat razonablemente eficiente, ¿en qué momento se vuelven prohibitivos de votación? 2) Realmente no quiero usar Juggernaut. No sé mucho sobre cómo funciona el cometa. Supongo que me pregunto si me resultaría terriblemente difícil crear usando Javascript (para crear un servidor/sondeador del lado del cliente) y otro idioma (para ofrecer un sondeo eficiente para los clientes que se encuentran detrás de un firewall y una integración en el CGI). y 3) (sí, de 2), si lo estoy haciendo de la manera correcta?

La respuesta más simple que podría esperar es una cuantificación "sí, pones 5 líneas de Javascript en el cliente y 20 líneas de rubí en un script CGI, y lo llamas un día".

Respuesta

1

Si fuera tan fácil de hacer la gente no se han construido esas tecnologías. En mi humilde opinión, creo que las encuestas siempre serán una forma estrafalaria de hacerlo. Que dijo ....

No estoy seguro de por qué Juggernaut está fuera de las tarjetas Un chico un trabajo para construir este sitio 64Squares con él y funciona muy bien.

Sé que otros sitios como WeeWar usan el método de sondeo y tienen hacia arriba o 400 solicitan un mínimo. Así que creo que tomaría algún tiempo antes de que la escala se convirtiera en un problema.

Buena suerte

Saludos

+0

Hmm ... entonces lo hacen sondeando más de 4 veces por segundo y eso escala bien? Hmm, entonces tal vez debería pensarlo, o al menos usarlo como respaldo para juggernaut. Supongo que tocar el 95% de las computadoras y capturar el resto debería estar "bien" – user54650

1

sí, se ponen 5 líneas de JavaScript en el cliente y 20 líneas de rubí en un script CGI, y lo llaman un día

+0

Sé que en este punto las respuestas humorísticas no son apreciadas y apreciadas en SO, pero no pude resistirme. – allesklar

+0

Me estaría riendo, excepto que he estado orando por una respuesta a esto durante toda la tarde. Estoy creando esto para ayudar a la pequeña empresa de un amigo, y como * I * no puedo hacer que Flash funcione en uno de mis navegadores, quiero evitar la tecnología dependiente si puedo. – user54650

+0

Lo siento. Una gran razón por la que hice el chiste es porque no tenía ningún consejo útil para dar. Buena suerte. – allesklar

0

COMET trabaja manteniendo la conexión con el servidor abierto en Javascript (hay un montón de ejemplos sobre la forma de obtener estos datos asincrónica en el sitio web COMET). El servidor esencialmente escribe los datos y los vacía, esto se puede hacer usando un Mutex en un ciclo cerrado. Probablemente también necesites una especie de cola de mensajes.

Podría ser mejor aprender sobre BOSH a la larga. Es la progresión natural de COMET.

Aunque Juggernaut tiene una curva de aprendizaje (o podría no ser así), aprender cómo hacer COMET es más empinado. Incluso simplemente sincronizar empujar es más difícil. No solo eso, sino que debes considerar cómo hacerlo bien. Nunca utilicé Juggernaut, pero en lo que respecta a los complementos de ROR, supongo que es trivial. Y si se dan cuenta de cómo hacer que escale mejor, obtienes un rendimiento más rápido de forma gratuita.

sondeo es otro opciones que deben trabajar técnicamente más simple , sin embargo, soy un apasionado de no usar el sondeo, ya que puede matar a su servidor - por lo que no voy a elaborar aquí porque siento que el sondeo es el perezoso ruta.

0

¿Qué pasa con la fogata? Realiza sondeos en el servidor cada 5 segundos. Funciona como un sueño

+0

Estoy esperando la capacidad de respuesta del nivel de IRC, que transmitirá múltiples mensajes por segundo a medida que aparezcan. – user54650

2

Estoy intentando hacer lo mismo ahora. Juggernaut funciona bien, pero no para Rails 3, y si eso no es un requisito, entonces sugiero usarlo, porque es muy fácil hacer un chat. Mi proyecto usa Rails 3 y sondea el servidor cada 3 segundos (Campfire también hace 3). Estoy usando Rails Metal para hacer las encuestas muy rápido.Si quieres usar Juggernaut, entonces genial, 2 líneas de lado del cliente js, y 1 o 2 del lado del servidor. De lo contrario, ¡a trabajar!

Cuestiones relacionadas