登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> 程序员学前班[不再更新,只读] >> 主题: [xmpp][添加好友]rfc3921中presence和roster集成的一点思考     [回主站]     [分站链接]
标题
[xmpp][添加好友]rfc3921中presence和roster集成的一点思考
clq
浏览(0) + 2008-10-30 12:49:13 发表 编辑

关键字:

[2018-10-19 16:17:41 最后更新]
[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 发出添加好友的请求













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



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



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



在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发出添加好友请求(也就是请求对方加自己为好友)













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

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

还没有评论 | 发表评论
参阅: XEP-0073 XMPP代码库 snipsnap-help R...
snipsnap-search XEP-0060 how
部分已翻译文档

RFC3920: XMPP核心
RFC3921: XMPP即时消息
RFC4622: URI和IRI
XEP-0030: 服务发现
XEP-0054: 电子名片
XEP-0065: SOCKS5字节流
XEP-0077: 带内注册
XEP-0079: 高级消息处理
XEP-0085: 聊天状态通知
XEP-0096: 文件传输
XEP-0115: 实体能力
XEP-0138: 流压缩
XEP-0153: 基于电子名片的头像
XEP-0166: jingle
XEP-0211: XMPP基本客户端2008
XEP-0212: XMPP基本服务器2008
XEP-0213: XMPP中级客户端2008
XEP-0216: XMPP中级服务器2008

翻译中的文档

符合 Category=标签/翻译中 的snip: (3)

* XEP-0045
* XEP-0060
* XEP-0144

已过时的文档

符合 Category=标签/已过时 的snip: (2)

* XEP-0073
* XEP-0117

所有标签

符合 Type:Category 的snip:(5)

已过时, 翻译中, 服务器, 客户端, 已翻译

最近变更

* XEP-0220:服务器回拔
* XEP-0220:服务器回拔 (liangroger)
* yangyue
* config
* yueyangf
* zzctest3
* zzctest2
* zzctest1
* zzctest
* jfire

已登录用户: (0)
… 和 6 位游客。.

Configure this box!

1. 登陆
2. 点击这里: snipsnap-portlet-1
3. 编辑这个文本框的内容

XMPP翻译计划简介
如何加入XMPP翻译计划
本站wiki和blog使用指南
本站wiki和blog版权声明
rooyee messenger......>>下载
XMPP软件
中文XMPP服务联盟
XMPP文档列表

Help
点击这里学习编写文本格式 帮助.

更多帮助(英文原版)

< 十月 2008 >星期日 星期一 星期二 星期三 星期四 星期五 星期六
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

链接:
>>如意网
>>XMPP Standards Foundation
>>XMPP Standards Foundation本站镜像
>>Jabberd2 Project
>>Mu-Conference Project
>>Exodus Project
>>Indy Project
>>Jwchat Project

XHTML 1.0 validated
CSS validated
RSS 2.0 validated
RSS Feed

Configure this box!

1. Login in
2. Click here: snipsnap-portlet-2
3. Edit this box

Powered by SnipSnap 1.0b3-uttoxeter

版权所有 @ 2006 - 2007 Jabber/XMPP中文翻译计划



总数:0 页次:1/0 首页 尾页  
总数:0 页次:1/0 首页 尾页  


所在合集/目录



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1