我如何处理流管理重复记录?

时间:2017-05-22 13:54:55

标签: ios objective-c chat openfire

  • 我正在实施XMPPStreamManagement XEP-198 ,但我的上一条消息多次重复

    // Check to see we resumed a previous session
    NSArray *stanzaIds = nil;
    if ([_xmppStreamManagement didResumeWithAckedStanzaIds:&stanzaIds serverResponse:NULL]){
    // Situation A
    }else {
    // Situation B
    //[self goOnline];
    [self.xmppStream sendElement:[XMPPPresence presence]]; // send available presence
    if ([sender supportsStreamManagement]) {
        [_xmppStreamManagement enableStreamManagementWithResumption:YES maxTimeout:0];
    }
    }
    
  • 之后我在xmpp上启用了流Stream Is Authenticate委托方法

    App1
  • 请建议我在哪里&如何,我解决重复的消息重复,也没有调用XMPPStreamManagement委托方法的

1 个答案:

答案 0 :(得分:0)

为避免邮件重复,您应在邮件ID的末尾添加唯一性检查。由于每个消息包都包含唯一ID,因此您应该检查该ID以避免重复消息。

<message from='userA@yourdomain.io' to='userB@yourdomain.io' id='msg_1'>
    <body>Shall we meet?</body>
</message>