【XMPP】基于XMPP的即时通信解决方案

什么是XMPP

  介绍XMPP以前,先来看看GTalk。html

  GTalk是Google推出的IM(Instant Messaging,即时通信)软件,相似于QQ和MSN。android

  从技术角度来讲,GTalk与QQ和MSN的差别是使用了不一样的通信协议,QQ使用了本身的私有协议(未公开),MSN也使用了本身的私有协议。而GTalk使用了XMPP(Extensible Messageing and Presence Protocol,可扩展消息与存在协议),这种通信协议是一种公开的协议,有不少IM都使用了XMPP。sql

  XMPP是一种基于XML的协议,它继承了XML的灵活性和可扩展性。所以,基于XMPP的应用也一样具备超强的灵活性和可扩展性。数据库

  1. 通过扩展后的XMPP能够经过发送扩展的信息来处理用户的需求,以及在XMPP的顶端创建如内容发布系统和基于地址的服务等应用程序。
  2. 并且,XMPP包含了针对服务器端的软件协议,使之能与另外一端进行通话,这使得开发者更容易创建客户应用程序或给一个系统添加功能。

开发背景

国际背景

  随着Internet技术的高速发展,即时通讯已经成为一种普遍使用的通讯方式。tomcat

  1996年Mirabilis公司推出了世界上第一个即时通讯系统ICQ,不到10年间,即时通讯(Instant Messaging,简称IM)以发展成为了最流行的网络应用之一。安全

  特别是近几年的迅速发展,即时通讯的功能日益丰富,再也不是个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、音乐、电视、游戏、电子商务等为一体的综合化信息平台。服务器

国内背景

  目前国内外及时通讯软件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的,甚 至连中国移动都力推飞信,但愿分得一杯羹。并发

  然而这些即时通信不能实现互联互通,限制了用户的扩展。


为何选择XMPP协议

  虽然如今即时通讯软件有不少,可是它们之间不能互联互通也阻碍了及时通讯用户的继续扩展。

  所以,在现阶段的各类即时通讯服务,没有统一的标准,没法实现互联互通,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通讯服务协议的互通。

  有了这个协议以后,使用任何一个组织或者我的提供的即便通讯服务,都可以无障碍的与其余的及时通讯服务的用户进行交流。例如google 公司2005年推出的Google talk就是一款基于XMPP协议的即便通讯软件。

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

  1. 即时信息和空间协议(IMPP)
  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的基础部分已经在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在扩展功能以及增值服务上还有很是大的竞争余地。


Xmpp协议介绍

协议概述

  XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。

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

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

  XMPP 协议已被批准为互联网即时通讯协议标准。

协议的网络架构

  XMPP中定义了三个角色,客户端,服务器,网关

  1. 通讯可以在这三者的任意两个之间双向发生。
  2. 服务器同时承担了客户端信息记录,链接管理和信息的路由功能。
  3. 网关承担着与异构即时通讯系统的互联互通,异构系统能够包括SMS(短信),MSN,ICQ等。

  基本的网络形式是单客户端经过TCP/IP链接到单服务器,而后在之上传输XML。

  

 

  XMPP的特色是将复杂性从客户端转移到服务器端。

  这使得客户端编写变得很是容易,更新系统功能也一样变得容易。

协议优势

  1. 开放—XMPP协议是自由、开放、公开的,而且易于了解。并且在客户端、服务器、组件、源码库等方面,都已经各自有多种实现。
  2. 标准—互联网工程工做小组(IETF)已经将Jabber的核心XML流协议以XMPP之名,正式列为承认的实时通讯及Presence技术。而XMPP的技术规格已被定义在RFC 3920及RFC 3921。任何IM供应商在遵循XMPP协议下,均可与Google Talk实现链接。
  3. 证明可用—第一个Jabber(如今XMPP)技术是Jeremie Miller在1998年开发的,如今已经至关稳定;数以百计的开发者为XMPP技术而努力。今日的互联网上有数以万计的XMPP服务器运做著,并有数以百万计的人们使用XMPP实时传讯软件。
  4. 分布式XMPP网络的架构和电子邮件十分相像;XMPP核心协议通讯方式是先建立一个stream,XMPP以TCP传递XML数据流,没有中央主服务器。任何人均可以运行本身的XMPP服务器,使我的及组织可以掌控他们的实时传讯体验。
  5. 安全—任何XMPP协议的服务器能够独立于公众XMPP网络(例如在企业内部网络中),而使用SASL及TLS等技术的可靠安全性,已自带于核心XMPP技术规格中。
  6. 可扩展—XML命名空间的威力可以使任何人在核心协议的基础上建造客制化的功能;为了维持通透性,常见的扩展有XMPP Standards Foundation。
  7. 弹性佳—XMPP除了可用在实时通讯的应用程序,还能用在网络管理、内容供稿、协同工具、文件共享、游戏、远程系统监控等。
  8. 多样性—用XMPP协议来建造及布署实时应用程序及服务的公司及开放源代码计划分布在各类领域;用XMPP技术开发软件,资源及支持的来源是多样的,使得使你不会陷于被“绑架”的困境。

协议缺点

  1. 数据负载过重:随着一般超过70%的XMPP协议的服务器的数据流量的存在和近60%的被重复转发,XMPP协议目前拥有一个大型架空中存在的数据提供给多个收件人。新的议定书正在研究,以减轻这一问题。
  2. 没有二进制数据:XMPP协议的方式被编码为一个单一的长的XML文件,所以没法提供修改二进制数据。所以, 文件传输协议同样使用外部的HTTP。若是不可避免,XMPP协议还提供了带编码的文件传输的全部数据使用的Base64。至于其余二进制数据加密会话(encrypted conversations)或图形图标(graphic icons)以嵌入式使用相同的方法。

Xmpp提供电子名片协议

  vCard是一种现存的、普遍使用的,用户我的信息存储的标准,有点像是电子名片。

  基础的功能是存储和获取用户的电子身份,该信息是用XML表示的,数据的存储取决于全部现存的Jabber服务器的实现。

系统特色

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


 服务器端介绍

 什么是Openfire

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

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

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

为何使用Openfire

  1. Openfire为Java开源项目
  2. 采用开放的XMPP协议
  3. 有多种针对不通系统的版本
  4. 使用Socket通信
  5. 单台服务器可支持上万并发用户,搭建分布式云服务器可轻松提供大量并发用户。
  6. Socket长链接
  7. 服务器稳定
  8. 提供接口,可本身开发插件

Windows下搭建服务器

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

Linux下搭建服务器

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


环境搭建

安装JDK

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

安装OpenFire

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

安装Mysql

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

安装Apach Tomcat

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

配置环境

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

  并将项目部署到Apach tomcat中。

安装项目

  1. ForAndroid:从Tomcat中下载android的项目XmppClientForAndroid.apk,并在手机中安装。
  2. ForPc:从Tomcat中下载Pc的项目 Spark.exe,并在手机中安装。
  3. ForWeb:打开Tomcat中的项目,直接运行登录。

  点击运行

设置服务器地址

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

注册用户

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

进行相对应的操做

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

  环境搭建请参考:http://www.cnblogs.com/charley_yang/archive/2011/03/27/1997052.html


 

文章参考

  http://baike.baidu.com/link?url=uPBLWsmv5AL8jWF3vQ4Hhcif-YkhMZB0xfxNfWA56Vgdig0bI9gQudZUICpWkDJb

  http://www.cnblogs.com/charley_yang/category/277938.html

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

相关文章
相关标签/搜索