XMPP

定义  XMPP(可扩展消息处理现场协议)是基于可扩展标记语言( XML)的协议,它用于即时消息( IM)以及在线现场探测。它在促进服务器之间的准即时操做。这个协议可能最终容许因特网用户向因特网上的其余任何人发送即时消息,即便其操做系统和浏览器不一样。
  XMPP的前身是 Jabber,一个开源形式组织产生的网络 即时通讯协议。XMPP目前被 IETF国际标准组织完成了标准化工做。标准化的核心结果分为两部分;
  核心的XML流传输协议
  基于XML流传输的即时通信扩展应用
  XMPP的核心XML流传输协议的定义使得XMPP可以在一个比以往网络通讯协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议可以很是漂亮。
  XMPP的即时通信扩展应用部分是根据IETF在这以前对即时通信的一个抽象定义的,与其余业已获得普遍使用的即时通信协议,诸如 AIM,QQ等有功能完整,完善等先进性。
  XMPP的扩展协议Jingle使得其支持语音和视频。

 
基本网络结构

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

 
功能

  传输的是与即时通信相关的指令。在之前这些命令要么用2进制的形式发送(好比 QQ),要么用纯文本指令加空格加参数加换行苻的方式发送(好比MSN)。而XMPP传输的即时通信指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错。而XMPP的核心部分就是一个在网络上分片段发送XML的流协议。这个流协议是XMPP的即时通信指令的传递基础,也是一个很是重要的能够被进一步利用的网络基础协议。因此能够说,XMPP用TCP传的是XML流。

 
具体应用

  举个例子看看所谓的XML流是什么样子的?
  客户端:<?xml version='1.0'?>
  <stream:stream
  to='example.com'
  xmlns='jabber:client'
  xmlns:stream='http://etherx.jabber.org/streams'
  version='1.0'>
  服务器:<?xml version='1.0'?>
  <stream:stream
  from='example.com'
  id='someid'
  xmlns='jabber:client'
  xmlns:stream='http://etherx.jabber.org/streams'
  version='1.0'>
  ...其余通讯...
  客户端:<message from='juliet@example.com'
  to='romeo@example.net'
  xml:lang='en'>
  客户端: <body>Art thou not Romeo, and a Montague?</body>
  客户端:</message>
  服务器:<message from='romeo@example.net'
  to='juliet@example.com'
  xml:lang='en'>
  服务器:<body>Neither, fair saint, if either thee dislike.</body>
  服务器:</message>
  客户端:</stream:stream>
  服务器:</stream:stream>
  以文档的观点来看,客户端或服务器发送的全部XML文本连缀在一块儿,从<stream>到</stream>构成了一个完整的XML文档。其中的stream标签就是所谓的XML Stream。在<stream>与</stream>中间的那些<message>...</message>这样的XML元素就是所谓的XML Stanza(XML节)。XMPP核心协议通讯的基本模式就是先创建一个stream,而后协商一堆安全之类的东西,中间通讯过程就是客户端发送XML Stanza,一个接一个的。服务器根据客户端发送的信息以及程序的逻辑,发送XML Stanza给客户端。可是这个过程并非一问一答的,任什么时候候都有可能从一个方发信给另一方。通讯的最后阶段是</stream>关闭流,关闭TCP/IP链接。

通俗解释

  其实XMPP 是一种很相似于http协议的一种数据传输协议,它的过程就如同“解包装--〉包装”的过程,用户只须要明白它接受的类型,并理解它返回的类型,就能够很好的利用xmpp来进行数据通信。
相关文章
相关标签/搜索