0
votes

I'm currently trying to make a Strophe based javascript script to get the list of available users in an OpenFire server (live refreshing needed). I don't care if I have to create a group, room or whatever it's called (anyway, the server will be running for only a small group of users, everyone connected to eachother), but I want to be able to make the server give such a list. How can I do this? I've read that I need to use muc extension, but I can't seem to find it anywhere...

1

1 Answers

3
votes

Problem solved! I had to add the users I was working with to a group and eachtime a user leaves or enters the room OpenFire notifies the other users of the room with a presence stanza wrapped inside a body tag most of the times. This makes Strophe to not identify those presence stanzas very well, so I had to overwrite the xmlInput function from the Strophe connection to get every single xml stanza that I get from the server.

conn.xmlInput = onXmlInput;
function onXmlInput(data) {
    Strophe.forEachChild(data, "presence", function(child) {
        var from = child.getAttribute('from');
        from = from.substring(0, from.indexOf('@'));
        //'type' will contain "unavailable" when offline and no attribute 'type' when online
        if (!child.hasAttribute('type')) {
            addUser(from);
        } else {                    
            deleteUser(from);
        }
    });
}