2012-03-07 31 views
7

No pude encontrar ningún punto de referencia razonable con respecto a la comparación entre un cliente de chat que se ejecuta con el servidor de chat node.js V.S. un cliente que trabaja con xmpp.Servidor de chat con websocket + node.js versus un cliente nativo con xmpp

Sé que node.js es asíncrono y, por lo que sé, también lo hace xmpp. Sin embargo, mi principal preocupación es el rendimiento con la misma cantidad de usuarios simultáneos.

Necesitaría esta información para escribir una aplicación de Android. Me gustaría conocer sus opiniones y ventajas/desventajas usando ambos sistemas.

Gracias de antemano.

+0

¿Tiene alguna idea de cuántos usuarios concurrentes se esperarán? (más o menos?) – TheHippo

+0

con node.js creo que 4000 y si es xmpp estoy pensando más de 2000 en el mismo hardware –

+0

Depende obviamente del hardware, pero si estás pensando XMPP solo admitiría la mitad del número de conexiones en el mismo hardware, creo que estás equivocado. Las estadísticas difíciles dependen de la aplicación y del perfil de uso, pero sé de configuraciones de servidor único XMPP que manejan 4K fácilmente. Incluso jabber.org se ejecuta en un solo servidor, con 20K conexiones en uso máximo.Dado que está diciendo que no usará muchas características de XMPP, su aplicación probablemente llegaría incluso más lejos que un servidor XMPP "normal" como jabber.org. – MattJ

Respuesta

1

Aunque entiendo lo que está preguntando, está intentando comparar una implementación de JavaScript del lado del servidor (Node.js) con un protocolo de mensajería (XMPP).

Hay muchos servidores XMPP listos para usar, y muchas bibliotecas de clientes, ya escritas. Dado que estas son las cosas concretas con las que trabajará, debería evaluarlas si está considerando usar XMPP y luego compararlas con otras soluciones a su problema.

Si implementa algo usted mismo encima de Node y websockets, debe manejar todo lo que XMPP ya proporciona, como autenticación, cifrado, protocolo de aplicación, etc., así como toda la lógica de enrutamiento del lado del servidor . Muchos servidores XMPP también admiten clustering: ejecutan de forma transparente varios servidores detrás de un único dominio.

En última instancia, la elección es suya, ya que sabe más acerca de su aplicación en particular. Debe comparar soluciones no solo en su rendimiento de nodo único sino también en tiempo de desarrollo y escalabilidad, entre otros factores.

+0

Sure MattJ, tiene toda la razón sobre la escalabilidad. Sin embargo, necesito saber qué diferencias de rendimiento existen entre ambas plataformas. La autenticación, el enrutamiento ... todavía no están en mi lista de prioridades principales. –

+0

Mi punto es que deberían serlo. Los requisitos de su aplicación deben decidirse por adelantado, y luego las preguntas sobre el rendimiento de las implementaciones deberían seguir más adelante. También sabrá entonces cuánto de un problema es que a Node.js + websocket le pueden faltar algunas características que XMPP proporciona. Pero si necesita las características de XMPP, Google y Facebook son una prueba de que puede escalar con éxito. – MattJ

+0

He buscado las características que proporciona xmpp. Como dije, el rendimiento y el total de usuarios simultáneos por máquina es más importante para mí. –

1

He creado un par de servicios de chat con Node.js para los clientes, y aunque puedo decir que es fácil obtener un servicio de chat básico que se ejecute con Node.js, es probable que dedique mucho tiempo a reinventar la rueda si eliges ir por esta ruta Un servidor XMPP como eJabberd tiene muchas funcionalidades incorporadas que no tendrá que reconstruir. Autenticación, chat multiusuario, moderación (patear/prohibir/ignorar), preferencias del usuario, registro, etc.

Para los proyectos en los que he trabajado, eJabberd era ciertamente excesivo, ya que solo necesitaban lo básico, pero debería considerar cuidadosamente su caso de uso haciendo una decisión.

Estoy pensando en crear un cliente web Node.js para XMPP, para hacer algo parecido a Campfire, pero con eJabberd como back-end. No me he comprometido a hacer esto, pero creo que sería una buena forma de obtener lo mejor de ambos mundos.

1

También depende del tipo de cliente que está escribiendo: los clientes basados ​​en navegador utilizan BOSH que es XMPP sobre HTTP, que utiliza un sondeo largo (similar al cometa). Esto crea al menos una solicitud cada 30 segundos (dependiendo de la configuración) de cada cliente, que comienza a sumar después de obtener unos pocos miles de clientes. Me gustaría ver una comparación sobre eso, parece que las conexiones web deberían tener una ventaja allí.

+0

Por supuesto, ahora puedes usar XMPP en websockets y obtener lo mejor de ambos mundos. – Robin