2

smack/asmack xmpp ライブラリを使用して、Android で簡単な xmpp グループ チャットを確立しようとしています。そして、基本的にすべてが機能していますが、例外は次のとおりです。利用できないプレゼンス、つまり、ユーザーがチャット ルームを離れたときは無視されるようです。グループ チャットに参加しているユーザーからのプレゼンスは問題ありません。

ローカルの Openfire サーバーと xmpp クライアント (Instantbird) の両方から、ユーザーが離れると利用できない存在があることがわかります。私の物だけに問題があります。

これが私のコードの主なスニペットです。つまり、ユーザーが部屋に (再) 入ると、コンソール出力 ("presenceListener.processPacket") が表示されます。ユーザーが部屋を出ると、何も起こりません。

public boolean join(String room, user) {

    this.chat = new MultiUserChat(this.xmppConn, room);

    this.presenceListener = new PacketListener() {
        @Override
        public void processPacket(Packet packet) {
            System.out.println("presenceListener.processPacket");
            if (packet instanceof Presence)
                // Handle presence
        }
    };
    this.chat.addParticipantListener(this.presenceListener);

    this.messageListener = ...
    this.chat.addMessageListener(this.messageListener);
    ...
    try {
        this.chat.join(user);
        ...
    } catch (...) {
        ...
    }
}

リスナーが何も拾わないときは理解できます。しかし、これは今の私には奇妙すぎる。ヒントがあればうれしいです...ありがとう!

キリスト教徒

4

1 に答える 1

0

ここで実用的なソリューションを見つけました。

プレゼンス パケット用のフィルタを備えた PacketFilter を使用し、xmpp 接続に接続します。ParticipantListener を MultiUserChat にアタッチすることで、私のソリューションに影響を与えます。

なぜ私の最初の試みが失敗したのかはまだわかりませんが、...まあ...今はうまくいきます。

于 2011-10-02T14:10:54.747 に答える