从OpenFire服务器获取用户列表

时间:2012-04-22 16:05:42

标签: xmpp openfire strophe

我目前正在尝试制作基于Strophe的javascript脚本,以获取OpenFire服务器中的可用用户列表(需要实时刷新)。我不在乎我是否必须创建一个组,一个房间或任何它被调用(无论如何,服务器将只为一小组用户运行,每个人都相互连接),但我希望能够使服务器给出这样的清单。 我怎样才能做到这一点?我已经读过我需要使用muc扩展,但我似乎无法在任何地方找到它......

1 个答案:

答案 0 :(得分:3)

问题解决了!我不得不将我正在使用的用户添加到一个组中,并且每次用户离开或进入房间时OpenFire通常会在房间的其他用户通知身体标签包含在大部分时间内。这使得Strophe不能很好地识别那些存在节,因此我不得不从Strophe连接覆盖xmlInput函数以获取从服务器获得的每个xml节。

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);
        }
    });
}