2014-09-14 3 views
-1

정규 패킷 필터를 사용하여 들어오는 MultiUserChat을 수신 대기하는 방법이 있습니다.Smack MUC 초대

지금은 들어오는 모든 패킷을 처리하고 유형에 따라 처리하는 클래스가 있습니다.

예를 들어 패킷이 메시지의 인스턴스이면 데이터베이스에 추가되고 브로드 캐스트가 전송됩니다. BTW MultiUserChat.addInvitationListener(InvitationListener)

: 당신은 당신의 코드에서 PacketListener 대신 PacketCollector를 사용하는 이유가 거기에 내가 들어오는 패킷

에 대해 듣고 얼마나

이 헤로인은 이미위한 API를 제공

public void registerListener(){ 
    Log.d("XMPP","New thread created for Message Listener"); 
    Thread t = new Thread(new Runnable() { 
     @Override 
     public void run() { 
      Log.d("XMPP","Message Listener Registered"); 
      PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class)); 
      PacketCollector collector = connection.createPacketCollector(filter); 
      while (true) { 
       Packet packet = collector.nextResult(); 
       packetManager.handlePacket(packet); 
      } 
     } 
    }); 
    t.start(); 
} 

답변

1

입니다 ? 가능한 경우 PacketListener를 사용하는 것이 좋습니다.

+0

이것은 MUC의 각 인스턴스에 대해 InvitationListener를 추가해야한다는 것을 의미합니까? 여러 MUC를 관리하는 클래스가 있기 때문입니다. – Maclaren

+0

아니요, 리스너를 인스턴스에 추가 할 수도 없으며 메서드는 정적입니다. – Flow

+0

감사합니다. PacketCollector를 사용하는 이유는 더 잘 알지 못했기 때문입니다. PacketListener를 사용하는 것이 더 낫다면, 왜 그렇습니까? – Maclaren