XMPP协议详解

1、开发背景

一、国际背景

随着Internet技术的高速发展,即时通讯已经成为一种普遍使用的通讯方式。1996年Mirabilis公司推出了世界上第一个即时通讯系统ICQ,不到10年间,即时通讯(Instant Messaging,简称IM)以发展成为了最流行的网络应用之一。特别是近几年的迅速发展,即时通讯的功能日益丰富,它再也不是个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、音乐、电视、游戏、电子商务等为一体的综合化信息平台。html

二、国内背景

目前国内外及时通讯软件IM(Instant Messenger )形势风起云涌,可谓战况空前,IM做为继Email和Web以后最主要的互联网基础应用之一,为商家必争之地。国内的形势因为QQ的垄断性优点明显,表 面稍显平静,实则暗流涌动。目前来看,胖企鹅公司以压倒性优点占据了国内IM市场近八成份额,而且牢牢抓住低端市场,用户数量庞大,盈利丰厚。其余的IM 微软MSN(WLM)、网易POPO、新浪UC、TOM Skype、Google Gtalk等占有率较为惨烈,还有雅虎即时通、AIM、ICQ以及传闻中的Baidu IM和搜狐搜Q以及一些目前并不出名的如校内网的校内通,Lava-lava等等等等,凡在国内叫得上号的叫不上号的互联网企业,几乎没有不推IM的,甚 至连中国移动都力推飞信,但愿分得一杯羹。然而这些即时通信不能实现互联互通,限制了用户的扩展。android

三、为何选择XMPP协议

虽然如今即时通讯软件有不少,可是它们之间不能互联互通也阻碍了及时通讯用户的继续扩展。所以,在现阶段的各类即便通讯服务,没有统一的标准,没法实现互联互通的局面下,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通讯服务协议的互通。有了这个协议以后,使用任何一个组织或者我的提供的即便通讯服务,都可以无障碍的与其余的及时通讯服务的用户进行交流。例如google 公司2005年推出的Google talk就是一款基于XMPP协议的即便通讯软件。sql

目前IM即时通讯有四种协议:数据库

1.即时信息和空间协议(IMPP)tomcat

2.空间和即时信息协议(PRIM)安全

3.针对即时通信和空间平衡扩充的进程开始协议SIP服务器

4.XMPP协议:该协议的前身是Jabber,咱们采起XMPP协议主来实现IM主要是考虑XMPP协议是以XML为基础的,它继承了在XML环境中灵活的发展性。这代表XMPP是可扩展的,因此XMPP信息不只能够是简单的文本,并且能够携带复杂的数据和各类格式的文件,也就是说XMPP协议不只能够用在人与人之间的交流,并且能够实现软件与软件或软件与人之间的交流,目前支持XMPP协议的即时通信工具备Gtalk、FaceBook IM、Twitter、网易POPO等等通信工具,具备很是好的发展情景。网络

正如任何事物都有其自身的发展规律同样,技术和产品的进步也有其自身的规律。架构

从萌芽到混乱最终标准化,这是互联网产品的基本规律。IM跟其实发展自Email,跟Email有着不少共同点。让咱们来对比一下Email目前的状况,或许会有些启示。Email如今已经被普遍应用,谁都不能质疑其互联网第二应用的地位(第一应用是Web)。 Email之因此能普遍地被应用最关键的缘由应该是Email有一套开放标准的协议规范(包括SMTP、POP、IMAP 等),任何人均可以基于这些协议规范开放本身的Email产品,无论是Email服务器也好,Email收发客户端也罢仍是如今颇为流行的Web形式的 Email界面,它们都是基于同一套标准。在这套标准的框架下,各个Email相关厂商都各自占据产业链的相应位置,相互合做相互竞争,这才是一个百花齐 放的健康竞争环境,并且这种健康竞争最终受益者仍是广大用户。并发

XMPP(www.xmpp.org)由Jabber软件基金会开发,最先在Jabber上实现。Jabber项目由Jeremie Miller在1998年开始的一个免费、开源的项目,用于提供给MSN、Yahoo!的IM服务。因为XMPP是一种基于XML架构的开放式协议,在IM通信中被普遍采用。

XMPP的基础部分已经在2002-2004年获得了互联网工程任务组(IETF)的批准, 这意味着XMPP在未来就像咱们认为理所固然的Internet协议TCP/IP、HTTP、FTP、SMTP、POP同样成为Internet标准;这 意味着之后咱们就像使用Web、使用Email和使用FTP同样开放地使用IM。甚至若干年后人们会理所固然地认为163的邮箱能够给Hotmail发邮 件同样,QQ用户也能够添加Gtalk用户,人们会逐渐忘却当年军阀割据纷乱的历史。这是一种革命性的进步!不支持XMPP的IM将会像IBM的 Token-Ring同样孤芳自赏或者像DEC NET协议同样被人遗忘。遥想当年DEC NET和IBM Token-Ring也是多么意气风发羽扇纶巾啊!

在XMPP被批准以前,世界上已经存在了数十种支持XMPP的服务器端和客户端以及数百万用 户。嗅觉灵敏的Google做为开放源代码社区和开放标准的最大受益者,第一时间感觉到了这种趋势,因此花重金将Gaim的做者挖去Google,因而就 有了基于XMPP的Gtalk。

开放的标准协议会致使产品的竞争更为健康和良性,整个产业链更为完善。固然产品之间的竞争惟 一的趋势就是同质化,产品发展到后期比拼的只有服务。这一点在传统产业已经被彻底验证,互联网产业也不能逃脱。至于到时用户是选Gtalk呢仍是选 POPO呢,就像用户如今选Gmail仍是163的邮箱同样,能够各有所好。不过IM在扩展功能以及增值服务上还有很是大的竞争余地。

2、Xmpp协议介绍

一、Xmpp协议概述

XMPP(Extensible Messaging and Presence Protocol,前称Jabber[1])是一种以XML为基础的开放式实时通讯协议,是经由互联网工程工做小组(IETF)经过的互联网标准。

XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。所以,基于XMPP的应用具备超强的可扩展性。通过扩展之后的XMPP能够经过发 送扩展的信息来处理用户的需求,以及在XMPP的顶端创建如内容发布系统和基于地址的服务等应用程 序。并且,XMPP包含了针对服务器端的软件协议,使之能与另外一个进行通话,这使得开发者更容易创建客户应用程序或给一个配好系统添加功能。

可扩展消息处理现场协议(eXtensible Messaging and Presence Protocol , XMPP) 是一种基于可扩展标记语言(eXtensible Markup Language, XML)的近端串流式即时通讯协议。它将现场和上下文敏感信息标记嵌入到XML 结构化数据中, 使得人与人之间、应用系统之间以及人与应用系统之间能即时相互通讯。XMPP 协议已被批准为互联网即时通讯协议标准。

二、Xmpp协议内容

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

三、Xmpp协议优势

开放—XMPP协议是自由、开放、公开的,而且易于了解。并且在客户端、服务器、组件、源码库等方面,都已经各自有多种实现。

标准—互联网工程工做小组(IETF)已经将Jabber的核心XML流协议以XMPP之名,正式列为承认的实时通讯及Presence技术。而XMPP的技术规格已被定义在RFC 3920及RFC 3921。任何IM供应商在遵循XMPP协议下,均可与Google Talk实现链接。

证明可用—第一个Jabber(如今XMPP)技术是Jeremie Miller在1998年开发的,如今已经至关稳定;数以百计的开发者为XMPP技术而努力。今日的互联网上有数以万计的XMPP服务器运做著,并有数以百万计的人们使用XMPP实时传讯软件。

分布式—XMPP网络的架构和电子邮件十分相像;XMPP核心协议通讯方式是先建立一个stream,XMPP以TCP传递XML数据流,没有中央主服务器。任何人均可以运行本身的XMPP服务器,使我的及组织可以掌控他们的实时传讯体验。

安全—任何XMPP协议的服务器能够独立于公众XMPP网络(例如在企业内部网络中),而使用SASL及TLS等技术的可靠安全性,已自带于核心XMPP技术规格中。

可扩展—XML命名空间的威力可以使任何人在核心协议的基础上建造客制化的功能;为了维持通透性,常见的扩展由XMPP Standards Foundation。

弹性佳—XMPP除了可用在实时通讯的应用程序,还能用在网络管理、内容供稿、协同工具、文件共享、游戏、远程系统监控等。

多样性—用XMPP协议来建造及布署实时应用程序及服务的公司及开放源代码计划分布在各类领域;用XMPP技术开发软件,资源及支持的来源是多样的,使得使你不会陷于被“绑架”的困境。

四、Xmpp协议缺点

数据负载过重:随着一般超过70%的XMPP协议的服务器的数据流量的存在和近60%的被重复转发,XMPP协议目前拥有一个大型架空中存在的数据提供给多个收件人。新的议定书正在研究,以减轻这一问题。

没有二进制数据:XMPP协议的方式被编码为一个单一的长的XML文件,所以没法提供修改二进制数据。所以, 文件传输协议同样使用外部的HTTP。若是不可避免,XMPP协议还提供了带编码的文件传输的全部数据使用的Base64。至于其余二进制数据加密会话(encrypted conversations)或图形图标(graphic icons)以嵌入式使用相同的方法。

五、Xmpp提供电子名片协议

vCard是一种现存的、普遍使用的,用户我的信息存储的标准,有点像是电子名片。基础的功能是存储和获取用户的电子身份,该信息是用XML表示的,数据的存储取决于全部现存的Jabber服务器的实现。

六、XMPP系统特色

客户机/服务器通讯模式、分布式网络、简单的客户端、XML的数据格式。

3、服务器端介绍

一、什么是Openfire

Openfire 采用Java开发,开源的实时协做(RTC)服务器基于XMPP(Jabber)协议。您可使用它轻易的构建高效率的即时通讯服务器.

Openfire安装和使用都很是简单,并利用Web进行管理。单台服务器可支持上万并发用户。

  因为是采用开放的XMPP协议,您可使用各类支持XMPP协议的IM客户端软件登录服务.

二、为何使用Openfire

A、Openfire为Java开源项目

B、 采用开放的XMPP协议

C、 有多种针对不通系统的版本

D、使用Socket通信

E、 单台服务器可支持上万并发用户,搭建分布式云服务器可轻松提供大量并发用户。

F、 Socket长链接

G、服务器稳定

H、提供接口,可本身开发插件

三、Windows下搭建服务器

JDK1.6 + Openfire For Windows + Mysql5.5 + Tomcat6

四、Linux下搭建服务器

JDK1.6 + Openfire For Linux + Mysql5.5 + Tomcat6

五、Mac下搭建服务器

4、客户端介绍

一、手机客户端

A、ForAndroidClient

手机登陆界面

 

手机IM联系人列表

手机用户与PC客户端用户聊天

手机用户与Web端用户聊天 


B、ForMobileClient

C、  ForIphoneClient

D、  ForSymbian

E、ForWp7

二、Pc客户端

A、SparkForJava(OpenSource)

 

PC端用户登陆界面

PC端IM联系人界面列表

PC端用户与手机端用户聊天界面

 

PC端用户与Web端用户聊天

B、SparkForC# (OpenSource)

二、Web客户端

A、RIA (Flex   And   Silverlight)

B、 Html5

C、Web2.0

Web端登陆

 

Web端与PC聊天

Web端与手机端聊天

5、环境搭建

一、安装JDK

下载官网的JDk,而且正常安装,待安装完成后设置环境变量。

二、安装OpenFire

下载Openfire,并正常默认安装。

三、安装Mysql

下载安装Mysql,指定Mysql的用户名和密码,以及数据库使用的编码。肯定是否容许远程访问该数据库。

四、安装Apach Tomcat

下载Apach基金会下的Tomcat服务器,而且解压安装。

五、配置环境

登录Openfire服务器控制台,设置相关的信息。如:端口,插件等。

并将项目部署到Apach tomcat中。

六、安装项目

一、  ForAndroid

从Tomcat中下载android的项目XmppClientForAndroid.apk,并在手机中安装。

二、  ForPc

从Tomcat中下载Pc的项目 Spark.exe,并在手机中安装。

三、  ForWeb

打开Tomcat中的项目,直接运行登录。

点击运行后:

七、设置服务器地址

ForAndroid、ForPc、ForWeb 都提供了个服务器地址设置的地方。默认Openfire的端口为5222.(除,Silverlight 的端口必须为 4502-4532)

八、注册用户

能够在服务器端直接注册用户,也能够在客户端注册用户。

九、进行相对应的操做

相对应的即时通信方面的操做。

6、项目演示

一、服务器端设置

A、Openfire 控制台

 

服务器主界面:

控制台主界面:


 

控制台内部管理:


用户/组管理:

会话管理:


聊天管理:


 

 

A、Mysql数据库

 

 

数据库表结构:

 

二、客户端设置

A、ForAndroid

 

B、ForPc

 

 

C、ForWeb

 

7、多方、多端即时通信

一、QQ、FaceBook、Twitter、MSN Messenger、Yahoo Messenger、AIM、Gadu-Gadu、ICQ、Google Talk、Popo

研读不一样的通讯协议,将Internet中经常使用的IM集成在一块儿,使得用户在操做系统中没必要安装太多的聊天软件。

二、PC、Pad、Phone、Web

用户能够经过PC、Pad、Phone、Web等任意一个client聊天。

8、解决方案

一、一个应用程序,多类型帐户可同时登录。

相似于Live Mail,没个帐户只能和本帐户下的朋友聊天。

有些国外的软件(Palringo、Trillian)以实现该功能.

 

 

 

二、一个应用程序,一个帐户能够和其余类型的帐户好友聊天。

XMPP IM 与非XMPP 的其余IM互联互通方法: 若是对方不是XMPP 体系中的用户, 就要在企业IM服务器上架设协议转换网关。在XMPP 的IM服务器上架设IM协议转换网关, 要遵照RFC3922 协议, 这个协议规定了XMPP 与公共显示和即时消息( CPIM)的映射。这里描述一下一个用户与MSN 用户的交流。在与MSN 用户交流以前, 企业IM用户首先设置一个MSN 用户到XMPP—MSN 协议转换网关上( 告诉MSN 的用户与密码给网关) , 如今网关就能够用这个MSN帐号与MSN 系统进行交流了。绑定了MSN 用户的企业IM用户登陆企业IM服务器后, 协议转换网关把MSN 帐号的好友的MSN 帐号返回给用户, 并在里面作了映射, 映射到了本地XMPP 帐号。如今用户能够跟与本地XMPP 用户同样, 与MSN 帐号的用户进行交流了。

9、全文概要图

 

参考自:http://www.cnblogs.com/luxiaofeng54/archive/2011/03/14/1984026.html

相关文章
相关标签/搜索