1

我从 openfire 服务器收到离线消息,但它包含空的 jabber:x:delay 扩展名。

我收到的消息是:

<message id="qU7N8-64" to="ac1@server.jj.ru" from="ac2@server.jj.ru/4847791" type="chat">
      <body>test message</body>
      <delay xmlns="urn:xmpp:delay"></delay>
      <x xmlns="jabber:x:delay"></x>
</message>

我收到带有 smack 库的这条消息。

但是当我用 Miranda IM 连接到 openfire 时,openfire 会发送扩展 jabber:x:delay 和数据。

为什么 openfire 只发送空的 jabber:x:delay 到 smack 库?

4

2 回答 2

1

连接后添加此行。

ProviderManager.getInstance()addExtensionProvider("x","jabber:x:delay", new DelayInformationProvider());
于 2014-04-12T12:28:24.213 回答
1

Openfire 没有做任何不同的事情,因为它不知道(或关心)连接的客户端。您显示的数据包非常特殊,因为它包含延迟交付的旧版本和当前版本,但两者都缺少必需的属性。

尝试使用 VM 参数-Dsmack.debugEnabled=true设置运行。然后检查传入的原始数据包的实际消息内容。最有可能发生两件事之一。

  1. 时间丢失了,所以 Miranda 通过填充一些默认值来补偿它,比如当前日期。
  2. 时间格式不符合规范,因此 Smack 中的解析器将其省略。
于 2012-10-23T13:29:50.370 回答