XMPP es una forma abreviada de Protocolo de presencia de mensajería extensible. Es un protocolo para transmitir elementos XML a través de una red con el fin de intercambiar mensajes e información de presencia casi en tiempo real. Este protocolo es utilizado principalmente por aplicaciones de mensajería instantánea como WhatsApp.
Sumerjámonos en cada carácter de la palabra XMPP :
- X : Significa extensible. XMPP es un proyecto de código abierto que puede modificarse o ampliarse según las necesidades.
- M: XMPP está diseñado para enviar mensajes en tiempo real. Tiene un mecanismo de empuje muy eficiente en comparación con otros protocolos.
- P : Determina si está en línea/fuera de línea/ocupado. Indica el estado.
- P: XMPP es un protocolo, es decir, un conjunto de estándares que permiten que los sistemas se comuniquen entre sí.
Estos son los requisitos básicos de cualquier mensajería instantánea que cumple XMPP:
- Envía y recibe mensajes con otros usuarios.
- Comprobar y compartir el estado de presencia
- Administre las suscripciones hacia y desde otros usuarios.
- Administrar lista de contactos
- Bloquear comunicaciones (recibir mensaje, compartir estado de presencia, etc.) a usuarios específicos.
Otras características de XMPP:
Descentralizado:
XMPP se basa en una arquitectura cliente-servidor, es decir, los clientes no se comunican directamente, lo hacen con la ayuda del servidor como intermediario. Es descentralizado significa que no hay un servidor XMPP centralizado como el correo electrónico, cualquiera puede ejecutar su propio servidor XMPP.
Cada cliente XMPP se identifica mediante JID (Jabber ID).
#JID { user, server, resource }
Por ejemplo, soy usuario de whatsApp y me identifico con mi número de móvil, entonces
user = "8767898790" server = "whatsapp.com" resource = "mobile" JID : "8767898790@whatsapp.com/mobile"
El recurso se utiliza en caso de que la aplicación sea compatible con aplicaciones móviles, de escritorio o web, por lo que puede ser opcional en caso de que una aplicación de mensajería instantánea admita solo un tipo de recurso.
Implementación de XMPP –
El protocolo original para XMPP es el Protocolo de control de transmisión , que utiliza secuencias XML abiertas sobre conexiones TCP de larga duración.
En algunos casos, hay firewalls restringidos, XMPP (puerto 5222) está bloqueado, por lo que no se puede usar para aplicaciones web y usuarios detrás de firewalls restringidos, para superar esto, la comunidad XMPP también desarrolló un transporte HTTP.
Y como el cliente usa HTTP, la mayoría de los cortafuegos permiten a los clientes obtener y publicar mensajes sin ningún problema. Por lo tanto, en escenarios donde el puerto TCP utilizado por XMPP está bloqueado, un servidor puede escuchar en el puerto HTTP normal y el tráfico debería pasar sin problemas.
Referencias:
xmpp.org
Wiki de XMPP