什么是XMPP扩展(XEP),以及如何使用它们?

时间:2013-08-10 16:41:39

标签: xmpp openfire strophe

我正在尝试使用OpenfireStrophe.js制作聊天应用程序。

我总是阅读有关XEP等的内容,并且始终将我重定向到XMPP Extensions,我甚至不知道如何使用这些扩展。这似乎是一个愚蠢的问题,但我可以接受,因为我是XMPP的新手 - 但我们如何使用这些扩展?

2 个答案:

答案 0 :(得分:12)

任何提出这个问题的人通常都应该从一个XMPP库开始,该库实现了他们已经需要的一切。

它仍然值得回答!

XMPP代表 eXstensible Messaging and Presence Protocol 。 “可扩展”部分很重要。 XMPP基于XML,这是一种支持命名空间概念的数据格式。

通过命名空间,您可以向XMPP添加未在original specifications中定义的位。这很重要,因为XMPP规范只是故意描述一组核心内容,如:

  • 客户端如何连接服务器
  • 加密(SSL / TLS)
  • 验证
  • 服务器如何相互通信以传递消息

......以及其他一些基本构建模块。

一旦你实现了这个东西,你就拥有了一个XMPP客户端,可以发送你喜欢的任何类型的数据!但这也是一个问题。

例如,您可能决定要在消息中包含格式(粗体斜体等),这在核心XMPP规范中未定义。好吧,你可以想办法做到这一点,但除非其他人都像你一样做,否则其他任何软件都无法解释它(他们只会忽略他们不理解的命名空间)。

因此, XMPP标准基金会(XSF)发布了一系列额外文档,称为 XMPP增强建议(XEP)。通常,每个XEP都描述一个特定的活动(从消息格式化到文件传输,多用户聊天等等),它们为每个人提供了用于该活动的标准格式。

您提到了Strophe.js。这是一个“低级”库,希望您实现自己需要的扩展。我不认为其中大部分都很难,但如果您不熟悉双向协议,基本XML / DOM概念等,则必须花一些时间学习。 Strophe.js的作者写了一本好书,也可以作为XMPP Web开发的介绍Professional XMPP Programming with Javascript and jQuery

XMPP: The Definitive Guide中也详细回答了这个问题,它还提供了核心协议和常见扩展的广泛概述。

有关XMPP的进一步在线阅读,此StackOverflow问题可能会提供一些指示:"Good tutorials on XMPP?"

希望这有帮助!

答案 1 :(得分:1)

除了MattJ's XEP description

如果您使用Strophe并且需要使用XEP中指定的功能,请查看Strophe Plugin repository以查看它是否已经为您实现。

例如,XEP-0045: Multi-User Chat扩展名在该存储库中的Strophe MUC plugin中实现。