2011-09-28 79 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解決方案。

我仍然不知道爲什麼我最初的嘗試失敗了,但是......好吧......現在就起作用了。