我正在使用SmackAPI在两个Java应用程序之间传输自定义IQ数据包。 XMPP服务器是本地OpenFire安装。原则上,这些数据包的发送和接收工作正常。但现在我想发送给多个收件人。对于消息,可以使用MultipleRecipientManager类轻松完成此操作。但我不知道如何将自定义IQ发送给多个收件人而不多次发送它们。我试图像使用普通消息一样使用MultipleRecipientManager,但这不起作用。将扩展(MultipleAddresses)添加到自定义IQ对象不起作用,并且对getChildElementXML方法中的地址进行硬编码也不起作用。
我总是从xmpp服务器收到错误。它告诉我,该服务不可用。我认为问题是,服务器不知道我的自定义IQ,但我该如何更改?
我的Openfire安装支持Extended Stanza Addressing。但它似乎只适用于普通信息。
我希望有人知道如何解决这个问题。
祝你好运 斯蒂芬
答案 0 :(得分:1)
对于消息,这可以通过使用来轻松完成 MultipleRecipientManager类。但我不知道如何发送自定义 智商分配给多个收件人而不多次发送。
无法将MultipleRecipientManager使用的方法转移到IQ。你必须多次发送它们。
您的问题让我想知道您的实施中是否存在设计缺陷。 “get”或“set”类型的IQ节需要得到接收方的确认。这也是为什么XEP-33被指定仅用于处理消息的原因。从理论上讲,您可以使用“from”属性来跟踪每个接收者是否已使用某个ID确认了IQ。但我想这并没有完成,因为它增加了协议的复杂性,但收效甚微。
无论如何,您似乎并不关心IQ结果,那么为什么不使用消息呢?