2012-12-28 3 views
2

저는 이제 asmack-android-7.jar API를 사용하여 android에 XMPP MUC 룸을 구축하려고합니다. 먼저 인스턴트 룸을 만든 다음 muc 리스너를 방에 추가합니다. 코드 조각은 다음과 같이 내가 방 다음에 다시 떠날 때내 xmpp 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"); 
       } 
     }); 
    } 
} 

일이 정말 나에게 혼란을 얻을 먼저, 청취자가 잘 작동 약간의 시간이 있지만, 그 청취자가 항상 같은 메시지를 처리하지 못할 수 있습니다 이 같은 형태 :

<message id="S7JfM-111" to="寻李白@xjopenfire/KascendVideo" type="groupchat" from="哈特的战争@conference.xjopenfire/[email protected]"><body>I love you</body><x xmlns="jabber:x:event"><offline/><delivered/><displayed/><composing/></x></message> 

가 하나 MOR와 메시지처럼 보인다 : 이런 오는 메시지가 때

RCV (723971008): <message id="FdkcR-24" to="寻李白@xjopenfire/KascendVideo" type="groupchat" from="哈特的战争@conference.xjopenfire/nutch"><body> from nutch</body></message> 

그러나, 청취자가 항상 잘 공정하게 작동 e 확장은 항상 잘 작동하지만 확장이없는 확장은 때때로 실패하는 경향이 있습니다. 나는 이것에 관해 정말로 혼란 스럽다, 어떤 신체가 나에게 무엇이 일어 났는지에 관해 이야기 할 수 있냐? 나는 너의 생각에 정말로 감사 할 것이다.

또 다른 질문은 내가 처음 인스턴트 룸을 만든 다음 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); 

난 정말 이런 것들에 대한 좌절 느낌이있어, 모든 아이디어는 환영합니다. 매우 감사합니다.

답변

0

두 번째 질문에 대한 간단한 해결책이 있습니다. 작성한 직후에 방에 참여하지 않아도됩니다. 왜냐하면 그것들은 실제로 어떤 것이 확장된다는 것을 의미하기 때문에 위에서 설명한 현상은 smack 라이브러리의 create() 및 join() 함수 구현과 관련이 있습니다.

관련 문제