我正在尝试使用 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 (...) {
...
}
}
我会理解什么时候听众什么都听不见。但这对我来说太奇怪了。我很高兴任何提示...谢谢!
基督教