2016-08-08 41 views
0

檢索消息,我在Openfire的& XMPP創建羣聊。了重複的信息,而從歷史

我得到歷史使用的Openfire服務器「因爲」,而加盟的房間。 這裏是我的代碼:

XMPPRoomMemoryStorage *roomStorage = [[XMPPRoomMemoryStorage alloc] init]; 
XMPPJID *roomJID = [XMPPJID jidWithString:chatWithUser]; 

xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:roomStorage 
              jid:roomJID 
            dispatchQueue:dispatch_get_main_queue()]; 

[xmppRoom activate:self.xmppStream]; 
[xmppRoom addDelegate:self 
     delegateQueue:dispatch_get_main_queue()]; 

NSXMLElement *history = [NSXMLElement elementWithName:@"history"]; 

[history addAttributeWithName:@"since" stringValue:finalDate]; 

[xmppRoom joinRoomUsingNickname:self.xmppStream.myJID.user 
         history:history 
         password:nil]; 

我存儲信息中本地因此,下一次用戶登錄從本地獲取最後的消息數據並將其發送到服務器在該日期之後獲取所有消息時。

finalDate is date from that i fetch from local and send it to server. 

但是happern是,當我發送finalDate服務器還獲取最後的消息,我已經存儲在本地數據庫中。

如果我從去年的LocalDB消息是「你好」和日期「2016-08-08T04:42.347Z:52」比它獲取從服務器「嗨」。

爲什麼出現這種情況?我想在日期之後從服務器發送消息。

+0

它給你更大或相等的價值..意味着無論你放在歷史日期如果它的最後一個消息相同,它也給你。 –

+0

如何克服它? – Kabali

+0

最後約會加幾秒鐘...... –

回答

1

XMPP MUC規範的問題是 - 歷史消息與服務器時間戳記,而你問since當地時間。有一個XMPPAutoTime模塊XMPPFramework,它試圖跟蹤時間差,你應該補充一點區別對於任何基於時間戳的查詢。檢查詳細說明here

+0

我使用零時間戳來獲取歷史記錄。 – Kabali