设置XMPP发布订阅节点:项目禁止错误将项目发布到节点

设置XMPP发布订阅节点:项目禁止错误将项目发布到节点,xmpp,publish-subscribe,Xmpp,Publish Subscribe,我试图设置一个XMPP发布-订阅节点,并对其进行配置,以便在将新项目发布到该节点时,有效负载会自动传递给所有订阅者。 为此,我将“pubsub#deliver#u payloads”配置选项设置为true,但在将项目发布到节点时,我得到一个错误。以下是我所做工作的细节: 首先,我创建节点: 服务器回复说它正常: 然后配置节点,将“pubsub#deliver#u payloads”选项设置为“true”,如下所示: 真的 服务器已成功答复: 但当我尝试将一些数据发布到该节点时,如

我试图设置一个XMPP发布-订阅节点,并对其进行配置,以便在将新项目发布到该节点时,有效负载会自动传递给所有订阅者。 为此,我将“pubsub#deliver#u payloads”配置选项设置为true,但在将项目发布到节点时,我得到一个错误。以下是我所做工作的细节:

首先,我创建节点:


服务器回复说它正常:


然后配置节点,将“pubsub#deliver#u payloads”选项设置为“true”,如下所示:


真的
服务器已成功答复:


但当我尝试将一些数据发布到该节点时,如下所示:


0.55
1.66
2014-04-02T15:14:58.783Z
服务器答复此错误:


0.55
1.66
2014-04-02T15:14:58.783Z
我使用OpenFire3.9.1作为服务器,而在客户端我使用javascript和Strophe库

谁能解释我为什么会犯这个错误


我尝试在节点上使用不同的配置,当我省略“pubsub#deliver#u payloads”选项时,我在将项目发布到节点时没有收到任何错误…

中解释了所有错误情况。您可以在中找到
项目禁止
错误消息,其内容如下:

如果事件类型为notification+transient,则发布服务器 提供项目时,服务必须使用 的错误和特定于pubsub的错误条件


好的,我明白了,在配置中只有选项“pubsub#deliver#u payloads”,节点被认为是“临时节点”(不允许项目)

但是,根据XEP-0060表4的4.3事件类型,如果我更改配置使节点“持久化”(即添加“pubsub#persist_items”并将其设置为true),服务器不应该抱怨

但在这种配置下:


真的
真的
如果我尝试将项目发布到节点,我仍然会收到相同的错误:


0.55
1.66
2014-04-03T08:50:48.682Z
我通过简单地将配置中的值从“true”转换为“1”来解决这个问题。实际上,在读取XEP-0060规范时,配置示例中使用了“真”-“假”和“1”-“0”值。但是,在我请求配置节点时Openfire服务器发送给我的形式中,只使用“1”-“0”值

使用以下配置,所有设备都可以正常工作:


1.
1.

由于您似乎发现了openfire不符合规范的情况,我建议将此报告给openfire开发者论坛。事实上,让我感到困惑的是XEP-0060:尽管所有这些属性都定义为“布尔”,但在示例中,它们有时使用“真”/“假”,有时使用“1”/“0”。例如,在示例139中,为什么值'pubsub#delivery_notifications',type='boolean'设置为“true”,而'pubsub#persist_items',type='boolean'设置为“1”?同样在示例145中,它们将真/假与1/0混合(尽管它们看起来都是“布尔的”…)好吧,它在XEP-0060中定义得非常清楚:你是对的,“实现必须支持两种类型的词汇表示”,我将向Openfire开发者论坛报告这个问题。谢谢