2012-12-08 29 views
0

我試圖使用openfire服務器和asmack庫實現pubsub。 我已經配置我的節點以這樣的方式subscribers必須採取的publishers使用smack讀取pubsub中的傳入消息數據包

我現在想讀取使用下面的代碼Message包的批准,但我沒有得到任何數據包。我想讀取Message數據包,因爲我想知道訂閱者何時向發佈者發送請求以獲得訂閱。

PacketTypeFilter filter = new PacketTypeFilter(org.jivesoftware.smack.packet.Message.class); 

    PacketListener myListener = new PacketListener(){ 

     @Override 
     public void processPacket(Packet packet) { 
      // TODO Auto-generated method stub 

      Log.d("PACKET" , "READ"); 

      if(packet instanceof org.jivesoftware.smack.packet.Message){ 

        org.jivesoftware.smack.packet.Message msg = (org.jivesoftware.smack.packet.Message) packet; 

      Log.d("MY MESSAGE" , msg.toXML()+ ""); 


        } 
       } 

      }; 

    cxmpp.addPacketListener(myListener, filter); 

所有我想要的是讀取傳入消息包

回答

1

如果你把所有的配置位和您的發佈 - 訂閱組件正常工作,然後得到一個正常的消息,你會做這樣的事情:

ConnectionConfiguration config = new ConnectionConfiguration("ADDRESS",PORT); // service name, also known as XMPP domain of the target server. 
config.setServiceName(this.pubsubServiceAddress); 
connection = new XMPPConnection(config); 
connection.connect(); 

PacketFilter filter = new MessageTypeFilter(Message.Type.normal); 

connection.addPacketListener(new PacketListener() { 
    public void processPacket(Packet packet) { 
    Message mes = (Message)packet; 
     // do your stuff here 
    } 
}, filter);