这回就简单的了解下信息的获取。
一、获取登录用户的基础信息
登录后首先要显示的是用户的昵称,按需求可能还有用户的jid,这时我们就要先获取用户的基本信息
//获取自身信息
var guid = newGuid();
var userInfo = $iq({
type : "get",
id : guid
}).c('query', {
xmlns : 'jabber:iq:register'
});
connection.sendIQ(userInfo,getUserInfo);
//生成guid
function newGuid() {
var guid = "";
for (var i = 1; i <= 32; i++) {
var n = Math.floor(Math.random() * 16.0).toString(16);
guid += n;
if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
guid += "-";
}
return guid;
}
要先生成消息的guid,接收方要通过发送的guid来判断这条消息是否重复,其中getUserInfo是用于处理返回的用户个人信息。
二、获取登录用户的群组信息
var group = $iq({
type : "get",
id : guid
}).c('query', {
xmlns : 'fd:muc:service'
}).c("action", {
type : 'OwnerRooms'
});
connection.sendIQ(group,getGroup);
用户已经加入的群组。
三、获取联系人列表
var iq = $iq({
type : "get",
id : guid
}).c('query', {
xmlns : 'jabber:iq:roster'
});
connection.sendIQ(iq,getFriends);
联系人列表一般要求会比较多,比如联系人分组,根据首字母进行排序(参考网页版微信)。获取完联系人列表后,新建一个全局的数组用于存放联系人列表,然后获取每个用户的昵称再通过首字母进行排序,生成页面的联系人列表时通过判断首字母是否相同来决定是否插入一个新的字母分组。
首字母的获取可以参考makePy.js,用法:nameString = wf.makePy(string);
四、获取用户头像
var userPhoto = $iq({
type : "get",
id : guid
}).c("query", {
xmlns : 'vcard-temp'
});
connection.sendIQ(userPhoto,getUserPhoto);
一般来说这些iq请求所返回的都是一个xml格式的iq节点,想要获取其中的值一般获取方法为:$(userPhoto).find(“vCard”).text() 用户头像如果是使用base64来进行传输的,可以使用$(".img").attr("src", 'data:image/gif;base64,'+meSrc);
这种方式直接打印在页面上。meSrc就是base64数据。