`
ldd600
  • 浏览: 101805 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
47bb354f-8b5f-3ea6-a206-c7ead38c741c
Hyperic插件开发不完...
浏览量:11078
社区版块
存档分类
最新评论

开源android推送服务androidpn修改点

 
阅读更多

花了几天时间,对androidpn的源代码进行了阅读,并修改了一些必要的功能。

 

服务端:

1.用户认证策略改为用device id和token。token是用户登陆应用成功后生成的,device id是一台机器的UUID。一个用户会绑定到多个device,和网站本身验证机制整合。

2.添加调整mina线程池的参数

3.去除提供的console,太危险

4.修改加载配置文件的方式,原来是到固定conf目录下加载配置,改为从classpath加载

5.接收推送任务改成从队列接收,增加缓冲,控制并发

6.根据服务器的硬件配置,可设置可最大的并发连接数,对已建立的连接采用LRU淘汰策略,当session被淘汰后,发送kick消息给客户端,使客户端停止notification service,reconnetion thread。

7.添加不同环境的maven profile,结合hudson打包

 

客户端:

1.reconnection thread修改为需要时启动,监测connection close事件

2.修改注册验证流程,在登录应用时注册登记用户名,deviceid之间的关系,一个用户会绑定多台设备。登陆后会在手机上生成一个token。并有有效时间(一个月)。当token有效时,android客户端可以请求和push server建立连接。token失效后,android客户端不再和push server连接,并关闭连接,token失效,表明这个用户已经很长时间不使用我们应用,我们也没必要给他推送,降低服务器负载。

3.添加在服务关掉时,unregister connetion listener,这样避免服务关掉后,还监听网络事件,反复重连

4.修改客户端不停的往客户端线程队列中提交任务,在提交任务前判断是否需要提交任务,当没有连接时,提交连接和登陆任务,当连接建立但没有登陆push server时,只提交log in任务

5.修改reconnect thread为局部变量,原来是实例变量,这样线程才能反复创建。

6.添加kick功能,当服务端连接达到一定数目时,会按照LRU策略,淘汰连接,会将最久没使用的session kick掉。这时客户端收到kick消息后,会停止notification service

7.修改device id的生成方法

8.用户在打开应用时,如果token有效,如果notification service被关闭,会再次启动notification service

 

 

下一版修改点:

1.session存储到global cache中

2.增加IP过滤机制,防止DDOS攻击。按照频度和次数过滤。

3.负载均衡,haproxy,LVS

4.不采用xmpp协议,试着采用其他序列化方式(protobuf),因为本身就用TLS连接

0
1
分享到:
评论
2 楼 ron.luo 2013-04-25  
哥们能分享下吗?
1 楼 290922195 2012-12-24  
帅哥能把你修改后的服务端和客户端发给我吗 我的邮箱是juncai825@163.com 非常感谢

相关推荐

    androidpn推送框架+文档

    androidpn为Android应用提供消息通知推送支持, 它本质上服务器端基于 Openfire,客户端基于 asmack,这二者都最 XMPP IM 开源实现里的二个基本组件,应该说 androidpn 只是把二者更多地结合起来用于做 Push的场景。...

    android推送开源框架

    AndroidPN是一个非常好用开源推送框架

    Androidpn推送

    关于服务器端向Android客户端的推送,主要有三种方式:轮询,应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果...

    android消息推送(服务端+客户端)

    完整的android消息推送示例,该例子完善了androidpn开源项目,支持离线推送。androidpn基于Apache Mina开源框架,采用XMPP协议传输数据。 实例中,服务端支持weblogic跟tomcat应用服务器。

    基于XMPP协议的Android消息推送设计与实现.pdf

    本文介绍了一种基于XMPP 协议的AndroidPn 开源框架的实现模型,将其部署在MySQL 数据库和Tomcat 服务器下,实现并改进了实时推送消息、自定义消息结构和内容、推送服务开机启动、手机端服务唤醒、发送离线消息等实用...

    Android 推送

    这是一个Android推送实例,androidpn开源项目基础上修改,包含客户端和服务端(Tomcat)

    androidpn-client-0.5.0 AND androidpn-server-0.5.0

    使用Apndroid Push Notification 实现android信息推送,AndroidPn项目是使用XMPP协议实现信息推送的一个开源项目。内涵服务端和客户端源码

    androidpn消息推送源码

    这是android消息推送开发的开源代码,这里为大家提供一下,我们可以一起学习下

    androidpn-client

    注明的韩国开源推送客户端androidpn-client.....

    androidpn推送服务器端+手机端(版本3.0)

    androidpn推送服务器端+手机端(版本3.0),androidpn开源框架集成的一个服务器端与手机端例子

    带服务端数据库和消息推送课程表源码.zip

    其中android.sql这个数据库是iTimetableServer这个服务端的数据库文件,用来存储课程信息,安卓客户端的课程信息都是获取的这个服务端的数据,Androidpn是用来进行消息通知的服务端,Androidpn是一个开源的消息推送...

    asmack-android-16jar包

    开源推送框架 androidpn的 android client端的jar包 实测有效。代码已调通。有需要的在评论里留下qq号

    anroid完美实现 push推送 源码奉送

    开源框架androidpn android平台完美实现push推送 客户端源码 服务端源码均开源

    androidpn_push:基于androidpn开源项目的改进版推送平台第一版

    androidpn_push 基于androidpn开源项目的改进版推送平台第一版 跟着郭霖老师打的 = =

    androidpn-client-0.5.0

    android 手机消息推送,采用xmpp,开源代码,这个是客户端源代码,免费下载哟

    javasmack源码-xmpp-push-notification:xmpp消息推送

    XMPP协议实现Android推送功能 Google官方的C2DM服务器底层也是采用XMPP协议进行的封装。XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测。这个协议可能最终允许...

Global site tag (gtag.js) - Google Analytics