我正在构建一个 Javascript XMPP 客户端,它创建或加入一个 XMPP 多用户聊天。XMPP-Server 是 Openfire,我在浏览器中使用 strophe.js 和插件 strophe.muc.js。我是这样加入的:
var connection = new Strophe.Connection(HTTPBIND);
connection.muc.join(
roomJid,
userName,
onMessage,
onPresence,
onRoster
);
现在我正在尝试使用任何用户的从属标志来决定进一步的步骤,所以我采用 roster 对象,它是由 strophe 库通过 onRoster 回调提供的,如下所示:
onRoster: function (roster){
console.log(roster);
// do stuff
return true;
}
不幸的是,我加入的所有 js-user-objects 的隶属关系都为“无”。我认为这不可能是服务器故障,因为如果我使用常规 XMPP 客户端 (Adium) 加入该 MUC,则关联的用户对象将具有适当的从属关系“成员”。当时没有在服务器端设置密码或任何其他限制。
那么 Adium 在加入该 MUC 时有什么不同,在加入时我必须做什么才能使 JS 客户端也成为“成员”?