Ciao Ivano,
credo che per poterti essere utile dovremmo sapere un po' di più su cosa effettivamente desideri realizzare.
Mi spiego. Se l'utente A invia un messaggio all'utente B, come fa B a saperlo?
1. quando lancia la sua app questa effettua una query e poi lo stesso accade premendo un apposito tasto
2. un service della app effettua un polling ogni x secondi sul server
3. il server adotta un servizio di push e sul device di B appare una notification
I messaggi sono solo testo oppure di varia natura (testo, immagini, filmati, audio..)?
Una volta ricevuti, i messaggi vanno conservati in qualche modo (tipo un SMS finchè non lo elimina l'utente)?
E così via.
Per la questione query+lista, magari abbrevi i tempi di latenza se conservi la lista localmente e la query chiede solo gli aggiornamenti a partire da un certo codice messaggio oppure orario.
Mi spiace se quanto precede risulti solo in aumento della confusione, ma magari può esserti utile come spunto di ulteriore riflessione.
Umberto