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

Openfireは、どのクライアントが接続されているかを知らない(または気にしない)ため、何も変わりません。表示しているパケットは、遅延配信のレガシーバージョンと現在のバージョンの両方が含まれているため、非常に独特ですが、両方に必要な属性がありません。

VM引数-Dsmack.debugEnabled=trueを設定して実行してみてください。次に、着信rawパケットで実際のメッセージコンテンツを確認します。2つのことが起こっている可能性が最も高いです。

  1. 時刻が欠落しているため、ミランダは現在の日付などのデフォルト値を入力して補正しています。
  2. 時間形式は仕様に準拠していないため、Smackのパーサーはそれを省略しています。
于 2012-10-23T13:29:50.370 に答える
1

接続後にこの行を追加します。

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