首先,我想提供一些背景信息:我想使用 XMPP 在各种客户端之间交换非结构化数据。数据源应该将其数据简单地发布到多用户聊天室 ( XEP-0045 ),以便任何感兴趣的客户都可以注册。XMPP MUC 服务可以有各种聊天室,为了找到我的数据源将信息推送到的聊天室,我想为那个聊天室设置一些自定义标识。我认为 muc#roominfo_<custom_ident> 具有一些自定义值会很好地实现这一点。
出于测试目的,我编写了一个在 XMPP 服务上创建 MUC 的应用程序。身份验证等一切正常。我正在使用 Smack 与 XMPP 服务器通信并创建房间。当我创建房间时,我在包含我的自定义信息之前向我请求的表单字段添加一个字段。MUC 已创建并可访问。然而,当我对房间的 JID 执行 disco#info 时,不会返回创建的自定义字段。
我用 (3.8.2) 的本地安装对此进行了测试。
我只是想知道,如果这是 Openfire 的问题,自定义表单字段(在 XEP-0045 中使用的XEP-0068)在创建 MUC 时没有存储,或者根据 XEP-0045 是否不允许?我阅读了 MUC 的规范,尤其是相应的部分,但找不到任何证据让我确信,显然不可能为 MUC 创建这样的自定义表单字段。也许我只是误解了规范中的某些内容?有没有人尝试过类似的东西并且它正在工作?如果是 Openfire 的问题,我可以尝试使用不同的 XMPP 服务器。