之前研究过Android的即时通讯软件,实现原理就是基于xmpp协议进行通信,主要涉及到三个部分,openfire(可参考:http://06peng...m/read.php?84)、Smack和Spark。openfire主要是作为服务器,负责管理客户端的通信连接,以及提供客户端一些通信信息和连接信息。Smack主要是xmpp协议的实现,提供了一套很好的api,所以下面操作xmpp都是通过使用smack的api来实现,由于Smack在Android中不是很完善,所以使用别人封装好的一个Smack框架叫做ASmack,下载地址:http://code.g...com/p/asmack/ Spark 是IM客户端的实现,其实就是使用了Smack 的api实现的。

这篇文章主要介绍xmpp协议的相关知识和分析一些在项目过程中参考的资料。

XMPP协议(Extensible Messaging and PresenceProtocol,可扩展消息处理现场协议)是一种基于XML的协议,目的是为了解决及时通信标准而提出来的,最早是在Jabber上实现的。它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。并且XML很易穿过防火墙,所以用XMPP构建的应用不易受到防火墙的阻碍。利用XMPP作为通用的传输机制,不同组织内的不同应用都可以进行有效的通信。

大概概念就是这样,详细请参考百度文库。

介绍一些相关的属性:

 

为了防止服务器间发送的数据被篡改或偷听,XMPP服务器通信引入了TLS机制,使用TLS机制能实现数据的加密,从而保证了在数据传输过程种数据的安全。
一个XMPP实体的地址称为Jabber Identifier或JID,作用类似于IP地址。一个合法的JID包括节点名,域名资源名,其格式为:jid=[node'@']domain['/'resource]

XMPP协议的命名空间:
jabber:iq:private   -- 私有数据存储,用于本地用户私人设置信息,比如用户备注等。
jabber:iq:conference  -- 一般会议,用于多个用户之间的信息共享
jabber:x:encrypted -- 加密的消息,用于发送加密消息
jabber:x:expire  -- 消息终止
jabber:iq:time  -- 客户端时间
jabber:iq:auth  -- 简单用户认证,一般用于服务器之间或者服务器和客户端之间的认证
jabber:x:roster  -- 内部花名册
jabber:x:signed  -- 标记的在线状态
jabber:iq:search -- 用户数据库查询,用于向服务器发送查询请求
jabber:iq:register -- 注册请求,用于用户注册相关信息
jabber:x:iq:roster -- 花名册管理
jabber:x:conference -- 会议邀请,用于向参加会议用户发送开会通知
jabber:x:event  -- 消息事件
vcard-temp  -- 临时的vCard,用于设置用户的头像以及昵称等

具体的连接和使用方法将另外说明,下面附上相关的学习资料:

 

下载文件 (已下载 25 次)
这个文件只能在登入之后下载。请先 注册登入

 

 

下载文件 (已下载 23 次)
这个文件只能在登入之后下载。请先 注册登入

 

 

下载文件 (已下载 26 次)
这个文件只能在登入之后下载。请先 注册 登入