APP的推送功能用SDK的话,感觉还是不太好。
第一、自己这样只能是个API monkey。
第二、项目里导了好多框架了,太臃肿了,尤其是阿里的一个破SDK,导致一个dex里方法数都大于65535了,当初我差点以为程序GG了。自己写的话,可能就一个类建一个长连接就搞定。
第三、SSM框架学了就没用过,是时候熟悉一下了。
所以还是自己锻炼一下,造个轮子。
经过前期准备工作,了解了下常见的实现,自己也在慕课网上找到了个教程,
网络框架NETTY好像是主流,但是教程里用的一个开源的推送服务端项目是MINA+Spring+Hibernate
然后基于XMPP实现的,我看了看觉得不一定要用开源的解决方案,我可以自己写一个更很轻量(其实就是打算去掉服务端的交互界面)的一个实现。
所以决定用以下方式实现一个很很很简单,但是能做到可用、健壮级别的推送服务器
MINA+Spring+SpringMVC+Mybatis+redis+Mysq
MINA作为非堵塞的网络框架,为服务器提供较高的并发性。
redis为了避免多次访问数据库,做一个缓存。
初步设计:
消息的推送模式:
服务器的实现:
服务器解析XMPP:
略
服务器发送XMPP:
略
服务器发送的流程:
客户端的实现:
接受消息:
略
发送消息:
略
使用心跳,是服务端判断客户端是否在线
断线重连
当然上面的东西只是很简单的设想,具体的实现方式,还是要在代码中体现。
那就从新建一个项目开始吧