轻量级推送及在此基础上的即时通讯探索(1)

APP的推送功能用SDK的话,感觉还是不太好。
第一、自己这样只能是个API monkey。
第二、项目里导了好多框架了,太臃肿了,尤其是阿里的一个破SDK,导致一个dex里方法数都大于65535了,当初我差点以为程序GG了。自己写的话,可能就一个类建一个长连接就搞定。
第三、SSM框架学了就没用过,是时候熟悉一下了。
所以还是自己锻炼一下,造个轮子。
 
经过前期准备工作,了解了下常见的实现,自己也在慕课网上找到了个教程,
网络框架NETTY好像是主流,但是教程里用的一个开源的推送服务端项目是MINA+Spring+Hibernate
然后基于XMPP实现的,我看了看觉得不一定要用开源的解决方案,我可以自己写一个更很轻量(其实就是打算去掉服务端的交互界面)的一个实现。
 
所以决定用以下方式实现一个很很很简单,但是能做到可用、健壮级别的推送服务器

MINA+Spring+SpringMVC+Mybatis+redis+Mysq

 
MINA作为非堵塞的网络框架,为服务器提供较高的并发性。
redis为了避免多次访问数据库,做一个缓存。
 
初步设计:
 
 
消息的推送模式:
    
 
服务器的实现:
 
   服务器解析XMPP:
            略
    
   服务器发送XMPP:
            略
 
   服务器发送的流程:
    
 
 
 
客户端的实现:
    接受消息:
        略
    发送消息:
        略
    使用心跳,是服务端判断客户端是否在线
    断线重连
    
 
 
 
当然上面的东西只是很简单的设想,具体的实现方式,还是要在代码中体现。
 
那就从新建一个项目开始吧



原文地址:https://www.cnblogs.com/You0/p/6030043.html