上記の警告は(おそらく)あなたが直面している問題とは関係ありません。これらの記憶喪失 イベントは通常、トランザクションログをダンプする必要があるが、前のトランザクションログのダンプがまだ終了していない場合に発生します。
{log_level, 5}
直面している問題は、内部で設定できるデバッグが必要ですejabberd.cfg
。これにより、ejabberdのデバッグログが有効になります。次に、ログを調べて、これが発生している理由についての推測を見つけます。また、戻ってきてログファイルの詳細をここに貼り付けてください。おそらく私たちはさらにあなたを助けることができるでしょう。私はejabberdでそのような無意味な問題に直面したことはありません。
ログファイルの添付後の更新:
ジョーが以下に書いたように、これは確かにリソースの競合のために起こっています。2つのクライアントが同じリソース値でログインしようとしています。しかし、理想的な世界では、これは問題ではありません。Jabberサーバーは、クライアントによって要求されたリソース値の上にカスタム値を追加または追加することによってこれを処理する必要があります。
たとえば、gtalk(Facebookチャットでも)サーバーが行うことは次のとおりです。
SENT <iq xmlns="jabber:client" type="set" id="1"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><resource>jaxl#resource</resource></bind></iq>
RCVD <iq id="1" type="result"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><jid>jabberxmpplibrary@gmail.com/jaxl#resou27F46704</jid></bind></iq>
ご覧のとおり、クライアントがリソース値でバインドするように要求しましjaxl#resource
たが、gtalkサーバーは実際にセッションをリソース値でバインドしjaxl#resou27F46704
ました。つまり、これはクライアントのバグではなく、ejabberdのバグです。
これを修正するには、次の2つのことができます。
- リソース値は、おそらくクライアント構成のどこかにハードコーディングされています。単にそれを削除します。優れたクライアントは、最後にランダムなリソース値を生成することで、これを自動的に処理します。
- ejabberdにパッチを適用して、gtalkサーバーの動作を実行します(上記のとおり)。これは、ejabberd_c2s.erl src内の関連セクションであり、微調整が必要です。また
Replaced by new connection
、c2sソースファイル内を検索すると、何が起こっているのかがわかります。