簡體   English   中英

從XMPP檢索最后一項使用Smack的PubSub節點始終只返回一個項目

[英]Retrieving last items from XMPP PubSub Node with Smack always returns only a single item

我在我的Android應用程序中使用最新的Smack(4.1)。

從節點檢索持久性項目時,它是否僅為每個用戶返回最新發布的項目? 現在,當我嘗試調用getItems時,我似乎只從每個用戶獲取最新發布的事件。 我想從節點中檢索所有項目,即使每個用戶有多個項目。

這是我目前用於檢索的代碼:

PubSubManager manager = new PubSubManager(connectionManager.getConnection());  
node = manager.getNode(nodeList);  
Collection<PayloadItem<EventItem>> eventItems = node.getItems(25);  
Log.e(TAG, "Collection size: " + eventItems.size());  
List<PayloadItem<EventItem>> payloadList = new ArrayList<>();  

for(PayloadItem<EventItem> payload : eventItems) {  
     eventItemList.add(payload.getPayload());  
}

這是我的節點配置表單:

ConfigureForm configureForm = new ConfigureForm(DataForm.Type.submit);  
        configureForm.setAccessModel(AccessModel.open);  
        configureForm.setDeliverPayloads(true);  
        configureForm.setNotifyRetract(true);  
        configureForm.setPersistentItems(true);  
        configureForm.setPublishModel(PublishModel.open);  

如您所知,setPersistentItems為true。 如果一個用戶向節點提交兩個項目,然后調用getItems,則只接收最新的已發布項目。 調試顯示我只收到以下內容:

<?xml version="1.0" encoding="UTF-8"?>  
<iq to="pubsub.example.com" id="4cw4Z-27" type="get">  
   <pubsub xmlns="http://jabber.org/protocol/pubsub">  
   <items node="TESTNODE" max_items="25" />  
   </pubsub>  
</iq>  


<?xml version="1.0" encoding="UTF-8"?>  
<iq from="pubsub.example.com" to="afa@example.com/Smack" id="4cw4Z-27" type="result">  
   <pubsub xmlns="http://jabber.org/protocol/pubsub">  
      <items node="TESTNODE">  
         <item id="bool@example.com/Smack">  
            <newevent xmlns="http://jabber.org/protocol/newevent" xml:lang="en">  
               <sender>bool@example.com</sender>  
               <title>Test Title 2</title>  
               <description>Test description</description>  
            </newevent>  
         </item>  
      </items>  
   </pubsub>  
</iq>  

這是我在調試中唯一收到的東西。 除了針對該特定用戶和其他用戶的最新發布項目之外,不存在其他項目。

很明顯,我收到了存儲在節點中的項目,但是服務器只返回每個用戶的最新發布項目。 我想檢索發布到節點的所有項目,無論它是否是該用戶的最新項目。

這是服務器設置問題嗎? 我感謝任何建議或意見。 謝謝!

這可能是服務器限制。 XEP-60 6.5.7使max_items成為可選功能。

我正在將有效負載項的JID設置為用戶的JID。 結果,我覆蓋了以前的ID,並且用戶之前的提交被覆蓋了。 我將PayLoadItem的ItemID設置為null,這樣服務器每次都會生成一個唯一的ID,因此不會覆蓋之前的項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM