XMPP
介绍
Extensible Messaging and Presence Protocol
,
简单的来讲,
它就是一个发送接收处理消息
的协议,但是这个协议发送的消息,既不是二进制的东东也不是字符串,而是
XML
。正是
因为使用了
XML
作为消息传递的中介,
Extensible
才谈的上,不是么?
IM
Instant Messenger
,
及时通信软件,
就是大家使用的
、
MSN Messenger
和
Gtalk
等等。
其中
Gtalk
就是基于
XMPP
协议的一个实现,其他的则不是。当前
IM
几乎作为每个上网
者必然使用的工具,在国外的大型企业中有一些企业级的
IM
应用,但是其商业价值还没完
全发挥出来。设想既然
XMPP
协议是一个公开的协议,那么每个企业都可以利用它来开发
适合本身企业工作,提高自身生产效率的
IM
;甚至,你还可以在网络游戏中集成这种通信
软件,
不但让你可以边游戏边聊天,
也可以开发出适合游戏本身的
IM
应用,
比如说一些游
戏关键场景提醒功能,团队语音交流等等都可以基于
IM
来实现。
Spark Smack
和
Openfire
开源界总是有许多有趣的东东,
这三个合起来就是一个完整的
XMPP IM
实现。
包括服
务器端——
Openfire
,客户端——
Spark
,
XMPP
传输协议的实现——
Smack
(记住,
XMPP
是一个协议,
协议是需要实现的,
Smack
起到的就是这样的一个作用)
。
三者都是基于
Java
语
言的实现。
Spark
提供了客户端一个基本的实现,
并提出了一个很好的插件架构,
这对于开发者来
说不能不说是一个福音。
我强烈建议基于插件方式来实现你新增加的功能,
而不是去改它的
源代码,这样有利于你项目架构,把原始项目的影响降到最低。
Openfire
是基于
XMPP
协议的
IM
的服务器端的一个实现,虽然当两个用户连接后,
可以通过点对点的方式来发送消息,
但是用户还是需要连接到服务器来获取一些连接信息和
通信信息的,所以服务器端是必须要实现的。
Openfire
也提供了一些基本功能,但真的很
基本的!庆幸的是,它也提供插件的扩展,像
Spark
一样,同样强烈建议使用插件扩展的
方式来增加新的功能,而不是修改人家的源代码。
Smack
是一个
XMPP
协议的
Java
实现,
提供一套可扩展的
API
,
不过有些时候,
你还
是不得不使用自己定制发送的
XML
文件内容的方式来实现自己的功能
下图展示了三者之间的关系: