Pregunta

No estoy seguro sobre la mejor pila para construir una aplicación de chat. Actualmente estoy pensando en dos opciones principales:

  • facebook tornado
    • contras: no utiliza el protocolo XMPP principal de chat, pero pubsubhubbub
    • Pros: me gusta mucho su sencillez para el desarrollo (servidor web + webframework); pubsubhubbub también parece más simple como un protocolo de XMPP; y sé pitón
  • xmpp + Bosch, Punjab, ejabberd
    • contras: no saben Erlang; en general parece un poco más difícil de desarrollar
    • pros: utiliza el protocolo XMPP

La aplicación de chat tendrá que tener lo siguiente:

  • Los mensajes privados
  • Las salas comunes
  • Las habitaciones privadas
  • El historial de chat de habitaciones (no para siempre, sólo los mensajes últimas n)
  • html incrustación
  • url para sala de chat

Las dos opciones parecen escalable de modo que en realidad no es mi preocupación (estamos pensando en ejecutar la aplicación en el EC2 de Amazon también). Sé que hay un proyecto que construye un servidor XMPP usando tornado pero no está listo para su uso en producción y nuestra fecha límite no es tan grande. Básicamente mi principal preocupación es la facilidad de desarrollo vs alguna manera lamentar más tarde usando pubsubhubbub para desarrollar una aplicación de chat pero he leído en alguna parte que PubSubHubbub podría llegar a sustituir XMPP como el descanso reemplazado jabón - Entonces, ¿qué piensa usted?

¿Fue útil?

Solución

Ir para XMPP.

Fuera de la caja, ejabberd tiene soporte para todas sus necesidades. Usted no tendrá que ver ninguna Erlang y escribir módulos personalizados para ejabberd. Y con Strophejs, XMPP en el navegador (que es lo que está haciendo parecer) es grande.

Para su última pregunta sobre pubsubhubbub sustitución de XMPP, no cuentan con ella. XMPP es más de 10 años de edad sólida de código abierto, y las implementaciones interoperables de propiedad tanto en el cliente y el servidor, y es elegante por lo que no va a desaparecer.

Y está desarrollando una aplicación de chat que es lo que se hizo para XMPP.

Otros consejos

Facebook Tornao uso duerma PubSubHubbub en absoluto!

Ir para XMPP, que ha sido diseñado para lo que estás buscando. Tornado no fue diseñado para que specicically, pero durante largos votación solicitudes en general.

No hay necesidad de utilizar el Punjab, el módulo ejabbed http-bind hace un muy buen trabajo ahora. Además, no es necesario para aprender Erlang, de la misma manera que no es necesario para aprender C cuando escribiendo una aplicación web que utiliza Apache :) Salida cosas por el estilo Aristochat . Lo único que se necesita para jugar con es la configuración de su servidor y salas de chat XMPP, y luego, Javascript para el lado del cliente (en el navegador).

Si usted no necesita a través de la federación XMPP, pero no desea crear prototipos y desplegar rápidamente junto con la escalabilidad de la caja, echar un vistazo al ejemplo del framework web elevación de un servidor de chat en una página de código .

PubSubHubbub (Push) nunca fue concebido para aplicaciones de chat en el primer lugar. A veces se refiere como el "IM para la Web". Yo sugeriría que pasan por esta diapositiva: en tiempo real Rubí para el tiempo real web igrigorik

La pregunta realmente es cómo en tiempo real que desea obtener? Si desea acelerar continuación XMPP es la mejor opción. (500 ms), mientras que PuSH depende de su alimentación y cómo su retransmitido. Recuerde, con PuSH su un total de 4 saltos de red antes de que el contenido alcance el abonado.

El problema es aún más grande PuSH se basa en HTTP Post. Incluso si lo hace terminar el diseño de una aplicación de chat basado en empuje, y decir en una etapa posterior, que desea que esté disponible para otros dispositivos o incluso como una aplicación de escritorio que tendría que transmitir el mismo contenido utilizando XMPP. El otro lugar va a estar perdiendo a cabo es en que sería muy difícil para los usuarios de su aplicación de chat iniciar sesión desde cualquier otro IM de su elección.

Se puede usar un API REST con WebSocket para implementar una arquitectura de editor / suscriptor.

Atmósfera y tomas fanfarronería son agradables marco de java que puede plug-in en su Jersey API REST y lograr esto.

El blog del creador de atmospehre, jfarcand, tiene un ejemplo de aplicación de chat construido con estas tecnologías.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top