XMPP添加好友相关文章一篇

http://jingyan.info/xmpp%E6%B7%BB%E5%8A%A0%E5%A5%BD%E5%8F%8B%E7%9B%B8%E5%85%B3%E6%96%87%E7%AB%A0%E4%B8%80%E7%AF%87/


[xmpp][添加好友]rfc3921中presence和roster集成的一点思考


[xmpp][添加好友]rfc3921中presence和roster集成的一点思考
Jabber(XMPP)中文翻译计划

http://wiki.jabbercn.org/space/start/2007-05-03/1
————————————————–

[ 开始 | 索引 | 登录 或 注册 | 忘记密码 ]
start > 2007-05-03 > 1
2007-05-03 #1
由how创建。最后一次被how修改,在1年1天之前。 被访问了 459 次。 #1
[编辑] [rdf]
标签
附件
rfc3921中presence和roster集成的一点思考
最近发现psi的添加联系人功能和别的客户端软件有一点小小不同, 也暴露出RFC3921中presence和roster集成中兼容性的一点小问题.

假定 user@jabbercn.org 使用 psi , 而 contact@rooyee.biz 使用 rooyee messenger ,情形如下:

1. contact@rooyee.biz 向 user@jabbercn.org 发出添加好友的请求

<iq id="rosterset1" type="set">

<query xmlns="jabber:iq:roster">

<item jid="user@jabbercn.org" name="user"/>

</query>

</iq>

<presence from="contact@rooyee.biz" to="user@jabbercn.org" type="subscribe"/>

2. user@jabbercn.org 向 contact@rooyee.biz 发出添加好友请求(也就是请求对方加自己为好友)

<presence from="user@jabbercn.org" to="contact@rooyee.biz" type="subscribe"/>

3. user@jabbercn.org 同意成为 contact@rooyee.biz 的好友(也就是批准对方添加自己)

<presence from="user@jabbercn.org" to="contact@rooyee.biz" type="subscribed"/>

4. contact@rooyee.biz 同意 成为user@jabbercn.org 的好友(也就是批准对方添加自己)

<presence from="contact@rooyee.biz" to="user@jabbercn.org" type="subscribed"/>

在RFC3921第八章:名册条目和出席信息订阅的集成中规定, 正常的用户之间的相互订阅中,本方接收到对方请求之后,首先要做的是批准对方请求,然后才是向对方提出订阅请求, 而在上述例子中,psi客户端(也就是用户user@jabbercb.org)是把这两步颠倒过来的(第二步和第三步).

现在兼容性的问题就来了, jabberd2服务器是严格按照RFC3921第八章:名册条目和出席信息订阅的集成来实现的,使用psi的user@jabbercn.org在批准contact@rooyee.biz之前就向对方请求订阅,导致最后user@jabbercn.org的状态是From,而contact@rooyee.biz状态则为Both, 也就是说 user@jabbercn.org 无法正常完成添加好友功能.

然后我们再来看看RFC3921第九章订阅状态中规定, 如果单从订阅状态考虑, 那么psi的处理方式并非那么无理. 我们看看每一步动作之后双方的状态改变情况(以下每一步的状态对应前述例子的每一步):

1. user@jabbercn.org : None + Pending In

contact@rooyee.biz : None + Pending Out

2. user@jabbercn.org : None + Pending In/Out

contact@rooyee.biz : None + Pending Out/In

3. user@jabbercn.org : From + Pending Out

contact@rooyee.biz : To + Pending In

4. user@jabbercn.org : Both

contact@rooyee.biz : Both

openfire中就是这样单纯按订阅状态处理的, 所以psi客户端和openfire服务器配合的时候可以正常地添加好友.

接下来我们再看RFC3921第六章的管理订阅和RFC3921第七章的名册管理, 如果不考虑集成的问题, 把相互加好友变成你加我加上我加你,那么就需要把前述的例子的第二步改成如下

2. user@jabbercn.org向contact@rooyee.biz发出添加好友请求(也就是请求对方加自己为好友)

<iq id="rosterset2" type="set">

<query xmlns="jabber:iq:roster">

<item jid="contact@rooyee.biz" name="contact"/>

</query>

</iq>

<presence from="user@jabbercn.org" to="contact@rooyee.biz" type="subscribe"/>

pandion客户端就是采用这个处理方式, 它和目前的服务器都可以很好地兼容.

综上所述, RFC3921的第六章第七章是把出席信息订阅和名册管理分开考虑的, 因为在XMPP中是允许存在独立的出席信息应用的,所以从逻辑上来讲它们是独立的, 第八章则考虑到了它们的集成,这是大部分XMPP应用中的典型需求, 第九章基于订阅状态处理的规则对于第八章的优化, 它侧重于使得服务器实现更加简单和易于兼容.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如意通是深圳如意通科技有限公司历时三年开发的,为企业量身打造的即时通讯软件,以文字、文件、语音、视频、远程控制为通讯基础,融合电子邮件、短信收发、网络电话、网络传真、电话会议、视频会议、网络虚拟办公室等多种通讯沟通手段,建立千万级用户的面向企业(政府,学校,网络组织)可管理的、高度安全的、专属的、可互联互通的企业级即时通讯系统。 基于XMPP(IETF国际标准组织IM通讯标准)、DNS 集群通讯解析,实现S2S(服务器服务器之间)的通讯服务器集群应用。解决目前企业即时通讯系统不能互联互通的难题,开拓分众即时通讯互联互通的先河,并提供软件插件库扩展增值应用机制,建立最普及的电子商务即时通讯群。 集群企业通讯-GEIM首创C2S2S-SGroup模式建立集群企业即时通讯,解决目前企业即时通讯系统不能互联互通的难题。 高效语音通讯,点击通话语音通讯创新实现平均带宽2K/S清晰语音通话,快速连接,首倡点击即时通话功能。高性能视频通讯平均带宽5-10K/S基本清晰视频通讯,自适应恶劣环境,为多路会议提供可靠的保障。 远程控制、远程协助、远程维护、远程培训 便捷的多种远程操作,异地网络事务处理更高效。运筹帷幄,决胜千里之外。 多线程文件传递,断点续传 支持文件(夹)的超大容量快速传输,防止优盘病毒传播,提高了网络的安全性能。 与OA、ERP等多种实用灵活集成可与多种软件实现灵活集成,方便用户使用。 便捷的沟通助手,提高沟通效率。丰富应用插件库 APPStore如意通具有丰富的应用插件库,提供用户灵活添加自己所需要的各种插件。 自定义表情、常用语、屏幕截图、拍照等如意通拥有丰富的表情和自定义用语,用户可随意添加修改,带来丰富通讯功能。 多语言支持动态多语言功能,支持简体中文,繁体中文,英语等,自动识别用户系统语言安装,同时用户可自行添加语言支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值