有关XMPP的好教程?

112
我一直在查看一些开源的XMPP服务器,并熟悉官方页面http://xmpp.org/。但是迄今为止,我没有找到介于“The Extensible Messaging and Presence Protocol (XMPP) is an open technology for real-time communication”和XEP规范清单之间的任何内容。例如,解释基础知识和术语的文章-数据包、IQ、在线状态等等。即使是维基百科页面也缺乏这一点,毫不奇怪,开源项目假定您在开始研究代码之前已经知道这些东西。
是否有一个好的(半)官方教程集?我需要寻找Jabber资源而不是XMPP吗?
除其他事项外,我希望看到有用例和流程的图表,而不仅仅是干燥的协议文本。我知道有关XMPP的书籍存在,但通常任何书中的内容都以某种形式在线上可用。
7个回答

54

我们使用 CocoaPods 简化了在 iOS 下创建聊天应用的过程,您可以在此处了解更多信息或下载演示代码:https://github.com/processone/demo-xmpp-ios - Loegic
我的镜像仍然存在,不确定为什么它从我的答案中被删除了... https://f.gdr.name/xmpp-tutorial.tar.gz - GDR

37

以下是让我开始XMPP开发的内容:

  • 一本好书:XMPP权威指南
  • 一个成熟的Java API。我选择了Ignite Realtime的Smack库,并使用Groovy语言与一堆小脚本来学习基础知识。

后来我为OpenFire XMPP服务器开发了一个插件。他们的网站上有一些教程和论坛,我认为smack和openfire api都很容易学习。

如果您不了解Java:该书提到了SkeekXMPP Python库,并使用它创建了一些示例(回声机器人等)。


好的。我建议你看一下这本书。由于API类大多以XMPP概念/数据包命名,一旦你了解基本术语,就会有一个很好的起点。 - towe75
1
另外,Jack Moffit的《Professional XMPP Programming with JavaScript and jQuery》一书非常出色,比上面提到的那本(O'Reilly)更好。http://professionalxmpp.com/ - user595349
在阅读《XMPP权威指南》时,请准备好看到大量的错别字和错误(主要出现在示例代码中)。 - kas-kad
XMPP权威指南是一本非常详细的好书,可能有点过时,但对我的启蒙很有帮助。 - Jerry

17

正如其他人所说,这些规范是一个很好的引言。它们确实具有技术性质,并且措辞精确 - 但它们确实是我见过的任何协议的最佳规范之一,特别是最新的RFC(61206121),它们澄清了原始版本中的某些不确定因素。

例如,您提到想要知道“stanza”的定义,它在6120第8节中解释(附有示例)。

如果您对如何使规范更清晰有任何反馈,请在XMPP邮件列表上表达,所有反馈都将被考虑用于下一份规范草案。

如果规范真的对您来说太多了(我欣赏有些人比我更喜欢图片),请考虑这本书(无论是纸质还是数字形式) - 它完全设计为对核心规范和最常见扩展的简单介绍,并由帮助开发和实施它们的人编写。


1
天啊,RFC 6120本身就有200多页。我还以为它们应该保持简单呢…… - Pacerier
1
简单并不意味着规范就会很短。我个人认为XMPP非常简单。特别是XMPP的模块化,即XMPP核心、XMPP IM和XEP之间的分离,使得这个协议对我来说非常有吸引力。 - Flow
1
正如其他人所指出的那样,RFC是学习XMPP的最佳伙伴。几年前我自己也在学习XMPP,并将一些信息编译成了面向初学者的教程。XMPP友好介绍花名册和在线状态应该是一个不错的开始。 - musimbate

8

2
我宁愿找到一些不同于原始协议的东西,因为那些是为了精确而非友好而编写的...但是仍然知道它涵盖了基本原理是有用的。 - Mr. Boy
所以你正在寻找一份程序员教程,涉及XMPP协议而不深入基础知识?我之前尝试使用过“XMPP Python API”(谷歌AP引擎):http://code.google.com/appengine/docs/python/xmpp/overview.html也许这可以作为进入XMPP世界的入门 :) - FloE
有点像...但是我曾经使用过的每种技术都有官方规范作为参考,但是阅读旨在更快地学习基础知识的教程,例如DirectX、Spring、CSS或任何其他东西。 - Mr. Boy
我明白。你所要求的基本术语在RFC和xmpp.com上有定义和描述(也许只有在那里...)。为了更实际的介绍,网上有很多例子和教程,可以使用Java、Perl、Ruby、Python等不同的API构建自己的Jabber客户端(例如前面评论中的链接)。 - FloE
@FloE,你引用的RFC已经过时了。除了阅读该RFC之外,还有大量相关的RFC需要阅读,以了解XMPP。 - Pacerier

3

这可能是一个老问题,但我只想记录一下我学习XMPP的过程。几年前,我和一些朋友正在学习如何利用XMPP,了解它如何适应更大的整体任务是相当繁琐的。我强烈建议首先阅读XMPP的维基百科页面:

http://en.wikipedia.org/wiki/XMPP

你会惊讶于有多少人无法回答关于XMPP的最基本问题。

我也强烈推荐阅读这篇文章:

http://www.infoworld.com/article/2682116/application-development/xmpp-rises-to-face-simple-standard.html

它将让你了解XMPP背后的动机、历史以及曾经与它同等水平的协议。

从那里开始,最好阅读维基百科页面的来源,以便更深入地了解您可能感兴趣的XMPP功能。


1
在服务器端安装openfire,并在Android端使用qsmack。

3
为什么我们要使用 qsmack 而不是 asmack? - Pacerier

1

为什么要使用Beem而不是原始的ASmack页面? - Pacerier
1
@Pacerier 上次我检查时,asmack并不稳定,而且也没有经常更新。因此,我使用了经常更新且似乎更加稳定的asmack的beem版本。 - Sheraz Ahmad Khilji

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接