花了几天时间,对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连接
分享到:
相关推荐
AndroidPN(Android Push Notification)是一个基于XMPP协议的开源Android推送通知实现,它包括了客户端和服务器端的完整实现。XMPP(Extensible Messaging and Presence Protocol)是一种用于即时通信和在线状态的...
AndroidPN,全称为Android Push Notification,是一个专门为Android平台设计的开源推送框架。它允许开发者轻松地在应用程序中集成远程推送通知服务,以便实时地向用户发送消息,无需应用程序处于前台运行状态。...
AndroidPN(Android Push Notification)是Android平台上的一种消息推送服务,旨在帮助开发者实现在应用程序后台时仍然能够接收服务器发送的通知或数据。在AndroidPN服务器推送的实现中,有以下几个关键知识点: 1....
androidpn为Android应用提供消息通知推送支持, 它本质上服务器端基于 Openfire,客户端基于 asmack,这二者都最 XMPP IM 开源实现里的二个基本组件,应该说 androidpn 只是把二者更多地结合起来用于做 Push的场景。...
通过学习和运行这个基于AndroidPN的远程推送Demo,开发者可以深入理解Android推送服务的工作原理,以及如何在实际应用中实现可靠且高效的推送机制。这对于提升用户体验,尤其是对于消息通知类应用,具有非常重要的...
AndroidPN(Android Push Notification)是一个为Android设备提供实时消息推送服务的开源项目。它允许开发者通过服务器向安装了特定应用的Android设备发送通知,无需保持应用程序在后台运行,从而节省设备资源并提高...
在这个话题中,我们将深入探讨Android推送服务的工作原理、实现方式以及相关组件。 首先,Android推送服务的核心在于实现服务器与客户端之间的通信。常见的推送服务有Google的Firebase Cloud Messaging (FCM),它是...
AndroidPN(Android Push Notification)是一种基于XMPP协议的开源消息推送系统,专为Android平台设计。这个项目包含两部分:客户端应用和服务器端组件。在本文中,我们将深入探讨这两个部分以及它们的工作原理。 ...
例如,`androidpn-server-0.5.0-bin.zip`可能包含一个开源的Android推送服务器实现,供开发者自建推送服务使用。这样的服务器需要处理注册、注销、消息发送等操作,并且可能支持批量推送和自定义消息格式。 接着,...
AndroidPN(Android Push Notification)是一种基于Google Cloud Messaging (GCM) 的第三方消息推送服务,用于在Android设备上实现后台消息的实时推送。AndroidPN的主要功能是帮助开发者在应用程序不运行时,仍然...
AndroidPN(Android Push Notification)是一种基于XMPP(Extensible Messaging and Presence Protocol)协议的开源消息推送客户端,主要用于Android平台。XMPP是一种开放标准的即时通讯协议,它允许应用程序通过...
AndroidPN(Android Push Notification)是一款基于XMPP协议的Android消息推送服务的开源项目。XMPP(Extensible Messaging and Presence Protocol)是一种实时通信协议,广泛应用于即时消息和在线状态的处理,它...
然后是Android端,"androidpn-client"表示这是Android应用程序的源代码,它负责接收并处理来自服务端的推送消息。客户端主要涉及以下组件和技术: 1. 应用注册:在启动时,客户端会向服务端注册,获取设备的唯一...
Androidpn是一个开源的Android推送通知服务,它提供了服务器端和客户端的完整解决方案。这个项目旨在帮助开发者快速集成推送功能,无需深入了解FCM的复杂性。尽管Androidpn项目较旧,但其核心思想和架构仍对理解推送...
AndroidPN是专门为Android设备设计的一个开源推送通知服务,它允许服务器向Android客户端发送消息,即使应用在后台或关闭状态也能接收到。 首先,我们需要理解AndroidPN的基本工作原理。AndroidPN基于Google Cloud ...
AndroidPN是一个开源项目,它提供了一种用于Android设备的消息推送服务。其核心优势在于采用了XMPP协议,这是一种基于XML的即时消息和在线状态协议,被广泛应用于诸如QQ、MSN和Google Talk等即时通讯工具中。XMPP...
MQTT协议作为一种轻量级的发布/订阅模式的物联网传输协议,近年来也被应用于Android推送服务。MQTT的特点在于其低带宽占用、低延迟以及良好的网络适应性,适合移动设备的推送场景。 - **方案四:第三方推送服务** ...
总的来说,AndroidPN结合Tomcat版本的推送服务,提供了可靠且可扩展的Android推送解决方案。开发者可以通过理解和配置这一系统,实现自己的推送服务,为Android应用增加实时性和互动性。不过,随着Google的GCM...
`Androidpn`可能是指一个开源的Android推送服务器项目,它允许开发者自建推送服务。服务器端主要负责: 1. 发送:通过GCM/FCM API向指定的注册ID发送推送消息。 2. 管理:管理设备注册信息,包括添加、删除和更新...
`androidpn`是一个基于XMPP协议的开源Android推送通知项目,提供了较为完善的实现方案。 #### 四、案例分析——基于MQTT协议的推送实现 1. **客户端实现**:在客户端部分,可以使用`wmqtt.jar`库来实现客户端对...