I’ve checked out the openfire source from svn, and got it working with a MySQL instance no problem, including adding some users, friends, and seeing that friends were online when logging in using either Adium or Spark IM clients.
Now I’ve tweaked the source, in particular I’ve overriden RosterItemProvider.getItems(). I’m trying to integrate with an in-house social app which already has a list of friends for each user (i.e. roster items). All works fine except one thing:
user1 logs in, say in Spark, and I will see their friend user2 is offline.
user2 logs in, say in Adium, and I will see their status changes to online in user1’s friends list in Spark, but according to user2’s list in Adium, user1 is offline.
If I change the status of user1 to something else (say busy), I will see their status change in user2’s list in Adium.
Does anyone have any suggestions why user2 doesn’t see that user1 is online straight away when user2 first logs in? If I revert to using the default RosterItemProvider it all works ok again.
Cheers, any advice/ideas welcome