Estoy a punto de desarrollar un sitio web que tenga chat casi en tiempo real. Sé que se puede implementar usando protocolos xmpp o websocket. También sé que el protocolo xmpp se desarrolló en 1999, y creo que debería estar maduro hoy en día. Por otro lado, el protocolo websocket se desarrolló en 2011.
- ¿Cuál era la necesidad de websocket si xmpp era bueno para manejar conversaciones en tiempo real?
- ¿Cuáles son las principales diferencias entre los 2 protocolos?
- ¿Y cuándo debería elegir uno de ellos sobre el otro?
Respuestas:
La respuesta corta es "ambos".
XMPP es un conjunto de protocolos de aplicación para chatear en tiempo real (y muchas otras cosas, para el caso); luego debe transportarse a través de la red de alguna manera, por lo que necesita un enlace de transporte. Hay tres enlaces de transporte principales para XMPP:
Entonces, si está desarrollando una aplicación de chat en un navegador, elegiría XMPP como el protocolo de aplicación y usaría websockets (en un navegador moderno) o BOSH (en un navegador más antiguo) como transporte de red. Si usa una biblioteca XMPP para Javascript como Stanza.io ( https://github.com/otalk/stanza.io ), admitirá ambos y solo estará pensando en 'XMPP' en lugar de la capa de transporte, excepto en la configuración cuando tiene que decirle a qué punto final conectarse.
(No puede usar 'solo websockets' para chatear; puede usar websockets sin XMPP, pero lo que esto realmente significa es que está inventando su propio protocolo de capa de aplicación para chatear, y lo más probable es que ahorre mucho tiempo y dolores de cabeza al aprovechar el trabajo que ya se ha realizado para escribir uno con propiedades útiles (seguridad, identidad, extensibilidad, etc.) y para el que existen bibliotecas y servidores al optar por XMPP).
fuente