asmack-android-7.jar the apiを使用して、AndroidでXMPPMUCルームを構築しようとしています。まず、インスタントルームを作成し、次にその部屋にmucリスナーを追加します。次のようなコードスニペット:
//create the an instant room if the same room has not been created.
MultiUserChat muc = new MultiUserChat(mConnection, roomJid);
muc.create(ownerNickname);
muc.sendConfigurationForm(new Form(Form.TYPE_SUBMIT));
// join a room and add listener
mMuc = new MultiUserChat(mConnection, roomJid);
mMuc.join(vistorNickname);
addListenerToMuc(mMuc);
// the listener function
private void addListenerToMuc(MultiUserChat muc){
if(null != muc){
muc.addMessageListener(new PacketListener() {
@Override
public void processPacket(Packet packet) {
Log.i("processPacket", "receiving message");
}
});
}
}
そうすると、物事は私にとって本当に混乱します。最初に、リスナーがうまく機能するときもありますが、私が部屋を出てから再び参加すると、リスナーは常に次のような形式でメッセージを処理できない可能性があります。
RCV (723971008): <message id="FdkcR-24" to="寻李白@xjopenfire/KascendVideo" type="groupchat" from="哈特的战争@conference.xjopenfire/nutch"><body> from nutch</body></message>
ただし、次のようなメッセージが来ると、リスナーは常にかなりうまく機能します。
<message id="S7JfM-111" to="寻李白@xjopenfire/KascendVideo" type="groupchat" from="哈特的战争@conference.xjopenfire/hangzhou@video"><body>I love you</body><x xmlns="jabber:x:event"><offline/><delivered/><displayed/><composing/></x></message>
1つ以上の拡張子が付いたメッセージは常に正常に機能するようですが、拡張子が付いていないメッセージは失敗する傾向があります。私はこれについて本当に混乱しています、誰かが何が起こったのか教えてもらえますか?私はあなたの考えに本当に感謝します。
私が見つけた別の質問は、最初にインスタントルームを作成し、次にMulitUserChatの新しいオブジェクトを作成せずにルームに参加すると、たとえばスパーククライアントを使用して他の人がルームに参加できず、エラーが発生することです。部屋は存在しません。具体的には、コードスニペットは次のようになります。
MultiUserChat mMuc = new MultiUserChat(mConnection, roomJid);
muc.create(ownerNickname);
muc.sendConfigurationForm(new Form(Form.TYPE_SUBMIT));
// join a room and add listener
mMuc.join(vistorNickname);
私はこれらのことに本当に不満を感じています。すべてのアイデアを歓迎します。どうもありがとう。