Allora, sto realizzando un semplice client jabber in java usando la libreria SMACK ma ho trovato un problemino...
Il codice è questo:
Dopo il login ottengo la lista contatti e controllo uno per uno lo stato. Il problema è che la lista la ottengo subito mentre lo stato arriva dopo!Codice PHP:connection = new XMPPConnection(data.getServer());
connection.connect();
connection.login(data.getUsername(), data.getPassword());
roster = connection.getRoster(); // ottengo la lista contatti
System.out.println("numero utenti: " + roster.getEntryCount());
// itero i singoli utenti
Iterator<RosterEntry> iter = roster.getEntries().iterator();
while (iter.hasNext())
{
RosterEntry entry = (RosterEntry) iter.next();
String user = entry.getUser();
Presence presence = roster.getPresence(user);
if (presence.isAvailable())
{
System.out.println(user + " e' online");
}
else
{
System.out.println(user + " e' offline");
}
}
Mi spiego meglio: con questo codice i contatti jabber li vedo TUTTI OFFLINE (anche se non è vero). Se pero' metto 4 o 5 secondi di sleep subito dopo "roster = connection.getRoster();" i contatti online vengono visti correttamente.
Ora. Come posso fare per "bloccare" il programma mentre aspetto che tutti gli stati dei contatti vengano rilevati correttamente?
Nella libreria smack non trovo nulla
Grazie 1000![]()


Rispondi quotando
