【问题标题】:Get list of users from OpenFire server从 OpenFire 服务器获取用户列表
【发布时间】:2012-04-22 16:05:41
【问题描述】:

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

【问题讨论】:

    标签: xmpp openfire strophe


    【解决方案1】:

    问题解决了!我必须将与我一起工作的用户添加到一个组中,并且每次用户离开或进入房间时,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);
            }
        });
    }
    

    【讨论】:

    • 您好,您正在创建一个群组并从中获得在线用户,但这是否有 30 个用户的限制?
    • 我没有遇到任何限制问题,因为我没有与大量用户合作......也许你可以在单独的线程中发布一个关于这个的问题;)
    • adduser 和 deleteuser 方法里面有什么?
    • @ButaniVijay addUser 和 deleteUser 是您在新用户加入或从服务器断开连接时执行的自定义方法。就我而言,我在已连接用户列表中添加和删除了它们。这是我的addUser 方法:$("select#recepients").append("<option id="+from+">"+from+"</option>")
    猜你喜欢
    • 2015-07-29
    • 2015-02-05
    • 2019-01-23
    • 2016-07-28
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    相关资源
    最近更新 更多