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