XMPP协议支持同一帐号在多处登录,并且支持对不同登录进行区分,这种区分通过绑定resourcepart实现。
XMPP协议中用户帐号格式为<localpart@domainpart>,如<juliet@im.example.com>,类似于EMail地址,其中domainpart是服务器域名,localpart为帐号ID,所以,Client通过domainpart即可唯一的确定Server,而Server通过localpart可以唯一的确定Clinet所登录的帐号(并不是唯一的确定Client,因为XMPP支持一个帐号在多处同时登录)。
那么,如何唯一的确定Client而不是Client对应帐号呢?XMPP协议中引入了resourcepart,当Client连接Server成功后,Client会绑定一个唯一的resourcepart,表示为<localpart@domainpart/resourcepart>。如此,服务器就可以唯一的定位到任意一个Client了。使用Openfire为服务器,会发现有个有趣的现象:帐号A在Client1和Client2上同时登录,由帐号B发送给帐号A消息,Client1和Client2会同时收到此消息,用Client1回复消息,B再发送消息给A,就只有Client1能收到了,再用Client2发送消息给B,B回复后,只有Client2能收到,Client1收不到。有了resourcepart之后,这一切变得很简单,也很容易理解。
Resourcepart的生成有两种方式:1.Server收到Client的请求后生成;2.Client直接将resourcepart发送至Server。
至于服务器是否一定要支持多用户同时登录,可根据实际需求确定,XMPP协议只是提供了一种支持,并不一定非这么做。如要禁止同帐号多处同时登录,可以在Client2认证请求的时候发送拒绝消息,或在close掉Client1的session。
由于历史原因,XMPP之前叫Jabber,所以XMPP的帐号ID也被称为JabberID,简称JID。我们称<localpart@domainpart>为"bare JID"(裸JID),而称<localpart@domainpart/resourcepart>为"full JID"。
相关推荐
在 XMPP 协议中,出席信息服务可以从即时消息服务中分离,例如,可以提供一个出席信息服务、一个即时消息服务或同时提供两者。XMPP 协议也提供了把出席信息服务和即时消息服务分离成为独立服务的可能性。 XMPP ...
不可多的XMPP协议中文帮助文档,大家可要下来保存哦!
xmpp协议和xmpp扩展协议,chm格式
XMPP_协议介绍,手机客户端需要实现即时通信功能,在通信协议上采用开放的Jabber(XMPP)协议,整个XMPP协议最为核心也是最为复杂的部分是Subscription的运行机制,抓取了一下相关的通信协议报文,供开发时候参考。
xmpp协议介绍PPT,详细介绍了XMPP核心协议方方面面
一个很好的基于XMPP协议通信的源码例子,之前在网上下载了很多基于XMpp协议的例子都不好使,经自己改动后能正常通信,VS2010
XMPP协议的核心部分,中文名称可扩展消息出席协议
xmpp协议可以用于聊天,内附中文文档,学习完就可以自己搭建服务器做android客户端的聊天程序了
xmpp协议 XMPP协议工具openfire_3_10_3。
基于XMPP协议的手机多方多端即时通讯方案
XMPP体系架构 XMPP server:其内核是一个XMPP路由器,完成基本组件间的数据包交换和路由。 功能: 1.会话管理器:负责客户端会话认证,在线状态,用户联系表等 2.数据存储器(XDB):连接数据库系统,保持用户信息、...
基于XMPP协议的手机多方多端即时通讯方案,包括详细的介绍和解决方案
MPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址...
类似QQ的xmpp协议聊天 基本功能都有了
1.绪论 2.通用的架构 3.地址空间 4.XML 流 5.TLS 的使用 6.SASL 的使用 7.资源绑定 8.服务器回拨 ...11.XMPP 中的 XML 用法 12.核心的兼容性要求 13.国际化事项 14.安全性事项 15.IANA 事项 16.参考
xmpp协议介绍,不错的文档,值得学习
一个比较全面面标准的XMPP协议文档,里面有具体的协议的说明及使用
XMPP协议分析,xmpp是即时通讯IM中比较普遍的应用