0

簡単な背景。

かなり大きなユーザーベース (70 万人以上のユーザー) が接続している ejabberd サーバーを実行しています。名簿のサイズが大きすぎて mnesia が処理できないという問題があったため、ユーザーがログイン/オフするときに、Web インターフェイスを使用して、ユーザーの名簿エントリを追加および削除することにしました。この方法の問題点は、彼らのログインが遅れていたことです。これに対する私たちの回避策は、名簿リクエストを遅延タスク テーブルに入れることでした。このテーブルは cron によって取得され、エントリが追加されます。その際に遭遇した問題は、DB にエントリが積み重なっていく速度が、処理にかかる時間を無駄にすることでした。テストの結果、それはスクリプトではなく、ejabberd サーバーからの実際の応答時間であることがわかりました。

この後、名簿を内部 menesia DB から mysql に移動することにしました。これを行うことで、ejabberd サーバーに影響を与えずに、名簿エントリを DB から直接挿入/削除できます。

ユーザー名簿のエントリを正常に追加および削除し、それらが Web インターフェイスに正常に表示されるようになりました。

問題は次のとおりです。相互の名簿エントリを追加した後、この人がオンラインであることをユーザーに伝えて、Web インターフェイスでオンラインとして表示されるようにする必要があります。現在、名簿エントリを追加した後、ユーザーはオフラインとして表示されます。

私の理解では、これを行うのはかなり単純なプレゼンス リクエストであるはずですが、機能させるのに問題があります。モジュール、またはプレゼンス リクエストを送信する簡単な方法はありますか。これにより、名簿にあなたがいる人は、あなたがオンラインであることを知り、自分の名簿をすばやく調査する方法もあります。

どんな助けでも感謝します。

4

1 に答える 1