2017-05-22 14 views
1
  • 私はXMPPストリーム上でストリームを有効XMPPStreamManagement XEP-198が、その後、私の最後のメッセージが複数回繰り返しストリーム管理の重複レコードはどのように処理できますか?

    _xmppStreamManagement = [[XMPPStreamManagement alloc] initWithStorage:[XMPPStreamManagementMemoryStorage new]];    
    // And then configured however you like. 
    // This is just an example: 
    _xmppStreamManagement.autoResume = YES; 
    _xmppStreamManagement.ackResponseDelay = 0.2; 
    [_xmppStreamManagement requestAck]; 
    [_xmppStreamManagement automaticallyRequestAcksAfterStanzaCount:3 orTimeout:0.4]; 
    [_xmppStreamManagement automaticallySendAcksAfterStanzaCount:10 orTimeout:5.0]; 
    
    [_xmppStreamManagement addDelegate:self delegateQueue:dispatch_get_main_queue()]; 
    [_xmppStreamManagement activate:self.xmppStream]; 
    
  • を実装していますが認証のデリゲートメソッドに

    // 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]; 
    } 
    } 
    
  • をしました

    どうか私にお勧めします&重複メッセージの繰り返しを解決し、また、メッセージの重複を避けるためにXMPPStreamManagementデリゲートメソッドの

答えて

0

を呼び出さないで、あなたは、メッセージIDのあなたの端に一意性チェックを追加する必要があります。すべてのメッセージパケットに一意のIDが含まれているので、重複したメッセージを避けるためにそのIDを確認する必要があります。

<message from='[email protected]' to='[email protected]' id='msg_1'> 
    <body>Shall we meet?</body> 
</message> 
+0

ありがとうございますが、私の問題ではない、私はそれに取り組んでいる、私は約80%の問題を解決すると思う –

関連する問題