2010-06-04 14 views
8

Necesito crear un chat como chat de Facebook.Cometa VS Ajax sondeo

Con Comet Necesito más memoria para mantener la conexión.

Con el sondeo Ajax hay un problema de latencia si envío una solicitud cada 3-4 segundos.

Entonces ... Si la latencia (3-4 segundos) no importa, ¿Ajax Polling es mejor para mi caso?

+1

Creo que acabas de responder a tu pregunta :) –

Respuesta

1

Si la latencia no es un problema, entonces AJAX es probablemente mejor. Comet puede encontrar problemas para mantener conexiones múltiples entre el mismo par cliente/servidor si no es muy, muy cuidadoso. (Ref)

6

Latencia no es el único problema. COMET (encuesta larga) "guarda" su tráfico: cuando utiliza encuestas, no puede saber si hubo cambios en el servidor, por lo que algunas de las llamadas pueden ser solo un desperdicio de tráfico y recursos (por ejemplo, incluso si no hay nadie) chateando, estás haciendo llamadas cada 3-4 segundos). En el caso de COMET, generalmente necesita una sola llamada para obtener una actualización del servidor (con una tasa de aciertos del 100%).

+2

pero con Comet, necesito más memoria para mantener abiertas las conexiones ... ¿no? – xRobot

+1

Mantener una conexión en sí no es tan dañino. El consumo de memoria depende más de la API de IO del lado del servidor que elija, bloqueo o no bloqueo. Si elige la API de bloqueo, tendrá un hilo por conexión -> problemas de memoria con 3-4k conexiones abiertas. Si elige la API sin bloqueo (casi todos los servidores de aplicaciones tienen capacidades de NIO), puede mantener millones de conexiones abiertas. –

+1

Puede encontrar esto interesante - http://iobound.com/2008/11/comet-nio/ –

2

@Vasil: "se puede mantener a millones de conexión abierta"

Tome una mirada to this problem

Y con respecto a the false superiority de NIO sobre IO.

El artículo iobound solo muestra que IO supera a NIO y sí IO se queda sin memoria antes de NIO (dicho sea de paso, el autor no ha intentado reducir la memoria de pila con un valor inferior).