[杂谈]什么是 XMPP

发布于:2019-09-05

杂谈

什么是XMPP

XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线通讯的相关场景。XMPP已被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分; 核心的XML流传输协议和基于XML流传输的即时通讯扩展。应用XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常容易被理解和调试。XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等相比,XMPP更加开放,更容易扩展并且天生就具有分布式特性。

由于XMPP协议是一个开源形式组织产生的网络即时通信协议,它的协议内容是开放的,任何人和组织都可以实现该协议,同时XMPP协议还非常强调各不同组织之间的服务器通信和互操作性,这让各个组织之间的消息互通不再是难题了。

XMPP的历史

1999年1月,Jeremie Miller发布了Jabber协议,这是一个开放的且基于实时XML流的传输协议。同年,Jeremie Miller向Jabber社区提交了一个声明,承诺Jabber社区会支持IEEE的标准化,其中包含了Jabber项目的目标:支持开放的协议并且支持即时通信的互操作性。 2000年与2001年,IEEE在推进IMPP,而Jabber社区则不断的在实现开放标准,并编写文档和完善协议。 2002年,XMPP工作组成立,并开始完善协议。 2003年及以后,就是我们所知道的,XMPP不断的发展壮大。

我们可以从这里看出,XMPP是一个非常有历史的协议,并且XMPP也经过了大量的实战检验。当然,在XMPP的发展中,不单单有Jeremie Miller全身心投入,更有Google的大量推广。我们所周知的GTalk和GMail中的实时聊天都是基于XMPP协议的。

XMPP能做什么

虽然我们因为即时通信(IM)对XMPP有了了解,但是XMPP协议不局限于即时通音(IM)。因为XMPP在协议制定支出着眼点很高,我们可以在XMPP的协议上大量扩展功能。其中包括,但不限于:

  1. Jabber-RPC
  2. VPN
  3. IOT

XMPP服务器

  1. eJabberd Erlang开发的高性能服务器。
  2. MongooseIM 在eJabberd的基础上进行二次开发,提供很多方便使用且非常高性能的服务器。
  3. Openfire Java开发的也比较常用的一款服务器,但是性能一般般。
  4. Prosody IM Lua开发的,不是很常见,据说非常轻量级。