2011-09-06 34 views
7

Quiero escribir una aplicación de chat en tiempo real y necesito decidir qué tecnologías usar.XMPP BOSH vs COMET

¿Cuáles son las diferencias entre estas tecnologías y cuál prefiere y por qué?

WebSockets en no es una opción, ya que su no está listo para luchar en salvajes

Gracias

Respuesta

28

Debe leer la pregunta "Why isn't BOSH more popular especially as an alternative to WebSockets and Long-Polling". kanaka ofrece una respuesta fantástica y estoy seguro de que resolverá las inquietudes que tenga acerca de WebSockets. WebSocket es absolutamente "listo para luchar en la naturaleza".

BOSH y Comet, en mi opinión, son la misma cosa. BOSH significa "bidireccionales corrientes a través de HTTP sincrónico" y aunque los BOSH specification estados:

Bosh, la tecnología definida en esta especificación, esencialmente ofrece una alternativa "drop-in" para una conexión de larga vida, bidireccional TCP . Es una tecnología madura y completa que ha sido implementada y desplegada ampliamente desde 2004. Hasta donde sabemos, fue la primera de muchas tecnologías similares, que ahora incluyen la metodología Comet formalizada en el Protocolo de Bayeux, así como el Protocolo de Socket Web y Reverse HTTP.

Sé que es un hecho de que los servidores Comet han existido desde al menos el año 2001, ya que trabajé para una empresa (Caplin Systems) que tenían, y todavía tiene, un servidor Comet.

La razón por la que digo que son la misma cosa, a un nivel fundamental, es que ambos originalmente (véase más adelante) se basó en dos conexiones HTTP. El primero es un canal secundario que es una conexión HTTP Streaming que se mantiene desde hace mucho tiempo o se usa para HTTP Long-Polling. La segunda conexión es de corta duración y se usa para enviar comandos, como solicitudes de suscripción. Estas dos conexiones permitieron simular la comunicación bidireccional.

Por lo tanto, en un nivel fundamental, BOSH y Comet utilizan los mismos mecanismos para la comunicación de servidor a cliente y cliente a servidor (el cliente es un navegador web u otro cliente web compatible). Donde BOSH difiere es que ofrece detalles adicionales dentro de su protocolo y fue desarrollado con XMPP en mente. Cualquier servidor Comet podría desarrollarse para cumplir con los estándares definidos en la especificación BOSH.

Dicho todo esto, los servidores Comet y BOSH sin duda ofrecerán mecanismos de transporte alternativos. Estos incluirán HTTP Streaming, HTTP Long-Polling, HTTP-Polling estándar y WebSockets.

Por lo tanto, si desea los detalles proporcionados por BOSH y XMPP, probablemente desee considerar una pila tecnológica construida con BOSH y XMPP en mente. Si desea enviar mensajes simples, sin esa carga adicional inherente en BOSH y XMPP, o si desea construir su propio "valor agregado" a su propio protocolo, entonces algo etiquetado como servidor Comet es probablemente una mejor solución.

Si opta por utilizar una pila de tecnología existente, en lugar de desarrollar una solución desde cero, es muy probable que la solución use WebSockets ya que ofrecen un mecanismo de comunicación bidireccional estandarizado y eficiente.

Intenté por primera vez un diagrama de pila de tecnología web en tiempo real que puede ver a continuación. Es de esperar que ayuda un poco:

Realtime Web Technology Stack

Puede encontrar una list of realtime technologies here.