江文奇
江文奇
  • 发布:2015-06-07 14:24
  • 更新:2015-06-07 20:54
  • 阅读:1568

如何在5+ 实现消息队列?

分类:5+ SDK

场景:
1,比如微信,你在断网的情况下修改用户名称,UI会立马修改,重启应用也会看到 已经修改了。
说明:微信 修改个人信息 首先会修改本地的数据库和UI

    2, 当恢复网络后,我好友的微信查看我的个人信息,会发现已经变更。  
   说明: 微信会在 网络恢复后,将修改个人信息这个请求,发送给微信的服务端。  

目前,我想实现类似的功能, 我的思路是,将发送给后端的消息,放入APP的消息队列,用websql实现 队列的序列化问题。
但是目前ajax 都是在页面中使用的,,如果要实现这个消息队列,就意味着,我的每个页面,都要写一样的逻辑 。1:读取消息数据,2.发送消息给后台。 所以我想利用插件的方式,,有原生代码去控制这个消息队列,而不是在页面利用ajax。 不知如何实现?

2015-06-07 14:24 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

没必要用原生插件实现。类似这样的离线操作同步功能,建议仅在相对独立的业务功能中实现,否则会增加系统复杂度

  1. 封装一个自己ajax接口,实现一个通用拦截器,当需要离线存储业务操作时,该拦截器负责存储离线操作,如websql存储。
  2. 实现一个离线业务操作同步功能,当联网时,读取队列发送给服务端同步业务操作。
    上述功能封装在全局引用的一个js里就行了。
    //简单示例,根据自己实际业务需求调整:  
    var ajax=function(ajaxOption,offline){  
    offline = offline||false;//是否离线存储业务操作  
    if(plus.networikinfo.CONNECTION_NONE===1){//离线  
    //TODO 存储业务操作,并调用successCallback  
    }else{  
    mui.ajax(ajaxOption);//正常ajax  
    }  
    };  
    //同步业务操作  
    var sync = function(){  
    //识别网路状态,读取业务操作,ajax到服务端做同步。根据业务需求在合适的时候调用sync  
    }
  • 蔡繁荣

    不明白为什么要 var xxx = function(){ } 这样来定义,很不习惯

    而不是function xxx(){ }

    2015-06-07 22:51

  • DCloud_UNI_FXY

    回复 蔡繁荣:根据自己的习惯使用即可。Function expressions,Function declarations两个只是略微有区别。函数表达式仅变量申明提前,函数定义原地,调用需要在定义之后,函数声明则是全部提前,在定义之前就能访问执行到

    2015-06-08 00:28

该问题目前已经被锁定, 无法添加新回复