• 轻量级推送及在此基础上的即时通讯探索(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:
                略
     
       服务器发送的流程:
        
     
     
     
    客户端的实现:
        接受消息:
            略
        发送消息:
            略
        使用心跳,是服务端判断客户端是否在线
        断线重连
        
     
     
     
    当然上面的东西只是很简单的设想,具体的实现方式,还是要在代码中体现。
     
    那就从新建一个项目开始吧



  • 相关阅读:
    Hibernate缓存之初探
    Oracle、MySql、SQLServer 数据分页查询
    LISTAGG WITHIN GROUP函数使用方法
    exp/imp密码特殊字符处理
    Oracle动态授权用户权限
    Centos7二进制安装Mysql8.0.14
    Zabbix监控Windows网卡流量
    Zabbix监控通过jvm插件监控Tomcat
    Linux安装RabbitMQ3.73开启插件shovel并做配置
    yum安装指定路径和配置文件出错
  • 原文地址:https://www.cnblogs.com/You0/p/6030043.html
Copyright © 2020-2023  润新知