3

クライアント側またはサーバー側の両方でストリーム管理を有効にしました。2 人のユーザー A と B がいます。両方のユーザーがオンラインです。その後、ユーザー A が突然接続を失いました。しかし、ユーザーはサーバーだけでなくユーザー B でもオンラインに表示されます。その間、ユーザー B はユーザー A にメッセージを送信します。これらのメッセージは失われませんが、ユーザー A が再びオンラインになると、2 ~ 3 分後にメッセージを受け取ります。オフライン ストレージでメッセージ スタンザを取得し、配信レシートを受け取ります。この問題は、1 対 1 のチャットと mucLight で発生します。mongooseIM モジュールをカスタマイズする必要がありますか。接続が失われたときにユーザーが遅延メッセージを受け取った理由を教えてください。SMストレージをオフラインストレージ(MAM)に変更することはできますか? ここに同じ問題のリンクがあります。このリンクで同じ問題を見つけました ( https://www.ejabberd.im/faq/tcp)しかし、メッセージを失っていませんが、遅延を受信しました.

smack-4.2Android app.and で有効なストリーム管理に使用される次のコードで lib を使用していますXMPPTCPConnection

  static{
        XMPPTCPConnection.setUseStreamManagementDefault(true);
        XMPPTCPConnection.setUseStreamManagementResumptionDefault(true);
   }

モジュール用のejabbered.cfgファイルは次のとおりですmod_stream_management

      {mod_stream_management, [
                       % default 100
                       % size of a buffer of unacked messages
                       % {buffer_max, 100}

                       % default 1 - server sends the ack request after each stanza
                       % {ack_freq, 1}

                       % default: 600 seconds
                       % {resume_timeout, 600}
                      ]},

構成ファイルで次のモジュールも有効にしました

   %% Only archives for c2c messages, good performance.
  {mod_mam_odbc_user, [pm]},
  {mod_mam_cache_user, [pm]},
% {mod_mam_mnesia_dirty_prefs, [pm]},
% {mod_mam_odbc_arch, [pm, no_writer]},
  {mod_mam_odbc_async_pool_writer, [pm]},
  {mod_mam, []}

ここで、以前のストリームIDでxmppサーバーに接続する解決策はほとんど見つかりませんでしたが、mongooseIM-2.0サーバーでは機能しません。

よろしくお願いします。

4

2 に答える 2