2011-09-28 75 views
2

我正尝试在Android上使用smack/asmack xmpp库建立一个简单的xmpp组聊天。基本上所有的工作都是有效的,除了:不可用的状态,即当用户离开聊天室时,似乎被忽略。来自进入群聊的用户的存在状态很好。Android/XMPP:状态监听器忽略/丢弃不可用的状态

我的本地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

我找到了工作液here

它使用PacketFilter和存在数据包的过滤器,将其附加到xmpp连接;尽管我通过将ParticipantListener附加到MultiUserChat解决方案。

我仍然不知道为什么我最初的尝试失败了,但是......好吧......现在就起作用了。