花名册管理之基本概念和操作

本文介绍了XMPP协议中的花名册管理,包括如何添加、更新和删除联系人。通过实例展示了IQ节点和<query/>子元素在花名册操作中的使用,以及订阅状态的四种类型。此外,提到了服务端如何处理这些操作并通知客户端。

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

这几天公司软件要增加黑名单的功能,因为公司产品的IM功能模块用的是开源的Gloox库,Gloox是实现了XMPP协议的c++客户端库,所以我觉得这个功能应该是很简单的,结果做起来发现XMPP的花名册管理(XMPP协议里面花名册管理部分相当于一般IM的好友管理)还挺麻烦的,消息绕来绕去的,我头都转晕了,再加上公司的前辈也没留下文档,没办法只有好好看看XMPP协议文档对花名册管理部分的描述了。

XMPP协议文档编号是RFC2193,里面的第7部分就是花名册管理(RostorManage)的描述,由于是英文文档,所以我看的速度很慢,然后边看边写了个Demo来印证,当然了Demo也是基于Gloox库的,服务端用的Openfire Server。花了一天的功夫终于有了个初步的了解,为了加深理解,也方便自己以后查阅,我决定把英文文档中关于RostorManage的部分翻译过来,然后加上一些自己的理解,下面就进入正题了。

在XMPP里面,一个人的联系人列表被称作一张花名册,其中包含一定数量联系人的名片,每张名片由JID唯一标识(JID通常是contact@domain的格式)。每个用户的花名册都被用户服务端存储在该用户的专属空间,所以该用户下的任意资源都可以访问花名册信息。

语法和语义

花名册通过包含一个<query/>子节点元素的IQ节点来管理花名册,并且这个子节点名为’jabber:iq:roster’域,这个<query/元素可以包含一个或者多个<item/>子元素,每个<item/>用来描述一个唯一的名片或者是联系人,每个<item/>包含一个JID作为关键字。在<item/>中可能会包含一个’subscription’属性,用来描述当前JID用户对于<item/>中的JID联系人用户出席订阅的状态,这个状态属性包含以下的值:

"none" -- 用户没有对联系人出席信息的一个订阅,同时联系人也没有对用户出席信息的订阅。

"to" --  用户

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值