GCM do Android: entendendo o XMPP

Estou tentando implementar um protocolo XMPP no meu GCM usando o aplicativo, mas mesmo depois de pesquisar bastante, não entendo os conceitos por trás dele.

Além disso, talvez eu realmente não precise do XMPP para o que quero fazer com meu aplicativo, mas gosto de aprender.

Vamos dar um exemplo do que eu poderia fazer com o HTTP:

meu aplicativo envia "hello word" e o registro para o meu pequeno servidor pessoal:url.openConnection(""), entãoOutputStream para enviar dados POST eInputStream por obter a resposta

o servidor, nesse URL, coloca a mensagem "hello word" em um banco de dados com o regId e, em seguida, usa a biblioteca curl do php para enviar dados aos servidores GCM como uma string json como{"myResponse":"I'm not world I'm Dan"} (usando um ID de destino do teste, em um emulador)

Servidor GCM faz seus negócios

meu aplicativo (talvez em outro telefone) use umIntentService em umWakefulBroadcastReceiver que recebem a mensagem comointent.getExtras().getString("myResponse")

Isso funciona bem e eu poderia enviar mensagens de um telefone para outro usando meu aplicativo e coletando dados no meu servidor.

Muito pouca pergunta

Essa maneira de lidar com HTTP está bem? (Vi muitas postagens e tutoriais, especialmente os do Google, mas ainda não tenho certeza)

Big real Question

Quais são as etapas para fazer o mesmo com o XMPP?

Não quero um tutorial ou partes de códigos, quero entender como as informações passam por esse protocolo que não conheço bem (consegui instalar o ejabberd no meu servidor e usar o pidgin no meu PC e o Xabber no meu telefone )

questionAnswers(1)

yourAnswerToTheQuestion