5

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

我总是阅读有关 XEP 等的信息,它总是将我重定向到XMPP 扩展,我什至不知道如何使用这些扩展。这似乎是一个愚蠢的问题,但我可以接受,因为我是XMPP的新手——但是我们如何使用扩展?

4

2 回答 2

12

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

但它仍然值得一个答案!

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

通过命名空间,您可以向 XMPP 添加原始规范中未定义的位。这很重要,因为 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 问题可能会给出一些指示:“关于 XMPP 的好教程?” .

希望这可以帮助!

于 2013-08-11T15:35:26.857 回答
1

除了MattJ 的 XEP 描述

如果您正在使用 Strophe 并且需要使用 XEP 中指定的功能,请查看Strophe 插件存储库以查看它是否已经为您实现。

例如,XEP-0045:多用户聊天扩展在该存储库的Strophe MUC 插件中实现。

于 2013-11-15T21:34:02.217 回答