我正在尝试使用smack / asmack xmpp库在Android上建立一个简单的xmpp群聊。基本上一切都在工作,除了:UNAVAILABLE存在,即当用户离开聊天室时,似乎被忽略了。用户进入群聊的情况很好。
我的本地Openfire服务器以及xmpp客户端(Instantbird)都告诉我,当用户离开时,存在UNAVAILABLE存在。只有我的东西有麻烦。
这是我的代码的主要代码段。简而言之,当用户(重新)进入房间时,我看到控制台输出(“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 (...) {
...
}
}
我会理解听众何时不会接受任何事情。但这对我来说太奇怪了。我对任何暗示感到高兴...谢谢!
基督教
答案 0 :(得分:0)
我找到了一个有效的解决方案here。
它使用PacketFilter和存在数据包的过滤器,将其附加到xmpp连接;通过将ParticipantListener附加到MultiUserChat来解决我的解决方案。
我仍然不知道为什么我的原始尝试失败了,但是......嗯......它现在有效。