Android GCM: comprensión de XMPP

Estoy tratando de implementar un protocolo XMPP en mi GCM usando la aplicación, pero incluso después de una búsqueda exhaustiva, no entiendo los conceptos detrás de él.

Además, tal vez realmente no necesito XMPP para lo que quiero hacer con mi aplicación, pero me gusta aprender cosas.

Tomemos este ejemplo de lo que podría hacer con HTTP:

mi aplicación envía "hola palabra" y el registro a mi pequeño servidor personal:url.openConnection(""), luegoOutputStream para enviar datos POST yInputStream para obtener la respuesta

el servidor, en esta url, coloca el mensaje "hola palabra" en una base de datos con el registro, y luego usa la biblioteca curl de php para enviar datos a los servidores GCM como una cadena json como{"myResponse":"I'm not world I'm Dan"} (utilizando una identificación de destino de prueba, en un emulador)

Servidor GCM hace su negocio

mi aplicación (tal vez en otro teléfono) usa unIntentService en unWakefulBroadcastReceiver que reciben el mensaje comointent.getExtras().getString("myResponse")

Esto funciona bien y podría enviar mensajes de un teléfono a otro usando mi aplicación y recolectando datos en mi servidor.

Muy poca pregunta

¿Esta forma de manejar HTTP está bien teóricamente? (Vi muchas publicaciones y tutoriales, especialmente los de Google, pero aún no estoy seguro)

Gran pregunta real

¿Cuáles son los pasos para hacer lo mismo con XMPP?

No quiero un tutorial o partes de códigos, quiero entender cómo funciona la información a través de este protocolo que no conozco bien (logré instalar ejabberd en mi servidor y usar pidgin en mi PC y Xabber en mi teléfono )

Respuestas a la pregunta(1)

Su respuesta a la pregunta