android asmack和xmpp的关系,XMPP协议和asmack

更多干货

一,什么是XMPP

XMPP(Extensible Messaging and Presence Protocol),可扩展消息与存储协议,是目前主流的IM协议之一,它是一种基于XML传输的协议,咱们都知道XML的可扩展性比较强,XMPP使用XML进行传输,使得咱们可使用XMPP发送扩展的消息来知足咱们更多的需求。

XMPP包含两部分的定义:一是核心的XML流传输协议,此定义使得XMPP可以在一个比以往网络通讯协议更规范的平台上实现;二是基于

XML流传输的即时通信扩展应用。

XMPP 中定义了三个角色:客户端,服务器,网关。通讯可以在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,链接管理和信息的路由功能。网关承担 着与异构即时通讯系统的互联互通,异构系统能够包括 SMS(短信),MSN,ICQ 等。基本的网络形式是单客户端经过 TCP/IP 链接到单服务器,而后在之上传输 XML。

XMPP 的基本网络结构以下:

C1----S1---S2---C3

|

C2----+--G1===FN1===FC1

符号表示:C1,C2,C3=XMPP 客户端;S1,S2=XMPP;服务端 G1=在 XMPP 和使用外部消息网络(非 XMPP)的协议之 间转换的网;FN1=外部消息网络;FC1=外部消息网络的客户端。

(1)服务器

服务系统是 XMPP 通讯的智能提取层,它主要负责:管理来自其余个体的会话链接或者 XML 流(streams)和来自客户 端、服务器、其余个体的认证发送在 XML 流实体之中的适当的 XML 地址节点。大多数 XMPP 服务都容许存储一些客户端 数据(好比联系人列表),在这种状况下,服务直接面向这个客户端处理 XML 数据,而不是其余个体。

(2)客户端

大多数客户端是经过 TCP 直接链接,而且使用 XMPP 得到服务器提供所有-12-第 2 章 Jabber 协议原理及其应用功能和其 他服务。许多资源经过认证的客户端也许同时链接到服务器,定义在 XMPP 地址的每一个资源是不一样的(好比 和)建议服务器和客户端采用的端中是 5222。

(3)网关

它的主要功能是将 XMPP 协议转换成外部消息(non-XMPP)系统使用的协议,也将返回的数据转换成 XMPP。这些通讯是基 于网关和服务器,基于网关和外部消息系统之间的。

XMPP 消息格式

Jabber/XMPP 系统使用 XML 流在不一样实体之间相互传输数据。在两个实体的链接期间,XML 流将从一个实体传送到另外一个实体。在实体间,有三个顶层的 XML 元素:

,和。每个都包含属性和子节 点。下面将分别描述这些元素。

1.消息(message)元素:

一个即时消息系统最基本的功能就是可以在两个用户之间实时交换消息,元素就提供了这个功能。每条消息 都有一个或多个属性和子元素。属性“from”和“to”分别表示了消息发送者和接收者的地址。也能够包含 一个“type”属性,这给接收者一个提示,这个消息是什么样的消息。表 3-1 给出了“type”属性的可能取 值。中也能够包含“id”属性,用来惟一的标识一个输出消息的响应。

2. 状态(presence)元素:

元素用来传递一个用户的存在状态的感知信息。用户能够是“available”,要么 是“unavailable”,“Hide”等。当用户链接到即时消息服务器后,好友发给他的消息就当即被传递。若是用户没有连 接到服务器,好友发给他的消息将被服务器存储起来直到用户链接到服务器。用户经过即时消息客户端本身控制可用性。 可是,若是用户断开了同服务器的链接,服务器将发送给订阅了这个用户的存在信息的用户通知他们用户已经不可 用。还包含了两个子元素:和。包含了一个对的文本描述。

3. IQ(Info

IQ 元素是 Jabber/XMPP 消息协议的第三个顶层元素。IQ 表明"Info/Query",用来发送和获取实体之间的信息。IQ 消息 是经过“请求/响应”机制在实体间进行交换的。IQ 元素用于不一样的目的,它们之间经过不一样的命名空间来加以区分。在 Jabber/XMPP 消息协议里有许多的命名空间,但最经常使用的命名空间 是:"jabber:iq:register","jabber:iq:auth","jabber:iq:roster"。

上面描述了 Jabber 协议的三个顶层节点。经过这种格式 Jabber 消息不只能够是简单的文本(text),并且能够携带 复杂的数据和各类格式的文件,也就是说 Jabber 不只能够用在人与人之间的交流,并且能够实现软件与软件或软件与人 之间的交流。Jabber 的这种功能大大扩展了即时通讯的应用范围。

XMPP 工做机制

例如:一个终端名字是 Remeo,经过服务器 montague.lit 与其余的用户相连,其余的用户 经过服务器 juliet@capulet.lit 创建链接。

第一步 Romeo 开始经过发送一个 stream 包与服务器 montague.lit 取得联系,这一步包含了鉴权,登陆等等。

第二步 Romeo 获取了他的联系人列表,经过向服务器 montague.lit 发送字段请求,按照下面的协议。

第三步 Romeo 发送了一个 presence 请求到服务器 montague.lit,而后会将这个信息广播到他的全部好友。

/>

/>

第四步 若是 Romeo 的联系人都在线,就会将 presence 回复给 Romeo,告知本身的状态。

第五步 Romeo 和 Juliet 开始交换信息,进行聊天。

>

以文档的观点来看,客户端或服务器发送的全部 XML 文本连缀在一块儿,从到构成了一个完整 的 XML 文档。其中的 stream 标签就是所谓的 XML Stream。在与中间的那些 ...这样的 XML 元素就是所谓的 XML Stanza(XML 节)。XMPP 核心协议通讯的基本模式就是 先创建一个 stream,而后协商一堆安全之类的东西,中间通讯过程就是客户端发送 XML Stanza,一个接一个的。服务器 根据客户端发送的信息以及程序的逻辑,发送 XML Stanza 给客户端。可是这个过程并非一问一答的,任什么时候候都有可 能从一个方发信给另一方。通讯的最后阶段是关闭流,关闭 TCP/IP 链接。

二,什么是asmack

asmack实际上是Smack在Android平台上的一个实现版本,Smack 是一个实现了XMPP协议的开源API库,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值