I have some fairly simple code where I connect to our OpenFire server and return the user’s roster. When I iterate over the roster and check for presence, I always see “unavailable” despite certain users being logged in. I have verified that certain users are logged via the OpenFire session admin page. That admin page shows correct presence and status information, neither of which is returned in my example application.
// Login to XMPP server
ConnectionConfiguration config = new ConnectionConfiguration(SERVER, PORT);
XMPPConnection conn = new XMPPConnection(config);
conn.connect();
conn.login(USERNAME, PASSWORD, RESOURCE);
// Return the user roster
Roster roster = conn.getRoster();
Collection<RosterEntry> entries = roster.getEntries();
for (RosterEntry entry : entries)
{
Presence presence = roster.getPresence(entry.getUser());
System.out.println(entry + "\t" + presence.isAvailable() + "\t" + presence.getStatus());
}
// Disconnect from XMPP server
conn.disconnect();
Running the above always produces output of the form: User Name: User ID [Group] false null
for every user regardless of their actual presence. Does anyone know why this is happening? TIA,
Mike