zoukankan      html  css  js  c++  java
  • xmpp这一段蛋疼的 坑,

    1,注释的地方 如果放出来,会 出现发送两遍消息的错觉,

    2,并且消息的 id有一模一样的,如果 刚好用这个做 id的话 会出现 主键约束,而 离线消息只能插入一条的情况,

    - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message

    {

        TTLog(@"receive message -----------------%@",message);

        IMMessageInfo *iMessageInfo = [[IMRootManagershareManager]xmppMessageToChatMessage:message stateFlag:RECEIVE_SUCCESS];

        [[DBcontrolsharedDBControl] saveIMMessage:iMessageInfo];

        

        NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:message, IM_MESSAGE_BODY, nil];

        [[NSNotificationCenterdefaultCenter] postNotificationName:IM_MESSAGE_RECEIVEobject:selfuserInfo:userInfo];

        

        if([UIApplicationsharedApplication].applicationState == UIApplicationStateBackground){

            [selfpushLocalNotification:message];

        }

    //    if([message hasReceiptRequest]){

    //        XMPPMessage *responseMessage = [message generateReceiptResponse];

    //        NSXMLElement *body = [NSXMLElement elementWithName:@"body"];

    //        [body setStringValue:@"r"];

    //        [responseMessage addChild:body];

    //        [xmppStream sendElement:responseMessage];

    //    }

        if ([message isChatMessageWithBody]) {

            NSString *messageID = [ChatVoiceRecorderVC getCurrentTimeString];

            [message addAttributeWithName:@"id" stringValue:messageID];

            TTLog(@" message with id-----------------%@",message);

     

          

        }

       

    }

  • 相关阅读:
    Laravel实用小功能
    _initialize() 区别 __construct()
    PHP websocket之聊天室实现
    原来PHP对象比数组用更少的内存
    PHP协程
    mongodb数据库的导出与导入
    我理解的数据结构(一)—— 数组(Array)
    Swoole 源码分析——Server模块之Worker事件循环
    PHP面试:说下什么是堆和堆排序?
    我理解的数据结构(二)—— 栈(Stack)
  • 原文地址:https://www.cnblogs.com/guligei/p/3645138.html
Copyright © 2011-2022 走看看