基于XMPP协议的WebIM(2)

本文介绍如何通过XMPP协议获取用户的个人资料、群组信息、联系人列表及头像等基本信息,并提供具体实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这回就简单的了解下信息的获取。
一、获取登录用户的基础信息
    登录后首先要显示的是用户的昵称,按需求可能还有用户的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数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值