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