0

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

4

1 回答 1

3

问题解决了!我必须将与我一起工作的用户添加到一个组中,并且每次用户离开或进入房间时,OpenFire 都会通知房间的其他用户,并且大多数情况下都会在 body 标签中包含一个存在节。这使得 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);
        }
    });
}
于 2012-04-25T04:35:48.987 回答