PB 如何做java如何实现消息推送送

用androidpn来实现推送 - Android - mobile - ITeye论坛
用androidpn来实现推送
& 上一页 1
锁定老帖子
精华帖 (0) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (0)
来自: 北京
发表时间:&&
最后修改:
相关知识库:
关于服务器端向Android客户端的推送,主要有三种方式:轮询,应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果太慢可能导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池;SMS(通过发送短信并解析短信内容来获取服务器端的指令),这个出现的问题是很难找到免费的网关来发送短信;最后就是持久连接,主要是Socket通讯,这个解决了性能问题,但是耗电问题依旧没能解决。
在这里,我们主要介绍的是第三种,用持久连接的方式来进行推送。现在比较成熟的及时消息传递协议共有四种,而无疑最为主流就是XMPP协议,它是一种基于XML的传递协议,具有很强的灵活性和可扩展性。它的特点是将复杂性从客户端转移到了服务器端。在网上可以找到很多的XMPP资料,这里就不在赘述了,不然越扯越多。总之,XMPP主要显著的优点主要有以下几个方面:
1、 分布式
任何人都可以运行自己的XMPP服务器,它没有主服务器
2、 安全性很高。使用SASL及TLS等技术的可靠安全性
3、 开发性 它是开源的,易于进行学习和了解
4、 跨平台
毋庸置疑,使用的XML进行传输的
说完优点,我们言归正传,基于XMPP协议的java开发有一个开源框架,那就是smack,它主要封装了一些XMPP的实现。而如果把它直接用在Android上是不行的,因为android缺少了一些java的类库,于是一个改进版的asmack诞生了,它是专门为android而改进的android smack。而另外一个开源框架的诞生,则是对在引用smack的基础上实现和服务器端的持久连接,以实现服务器对客户端的推送,那就是android push notification,简称androidpn。
Androidpn在客户端集成了asmack。这样就可以很容易的简立一个和服务器端的基于xmpp协议的socket连接。Androidpn的客户端中,进行管理连接的类是XmppManager,它主要用来管理连接的信息,比如XMPP的端口、IP、登录的用户名密码,以及对连接的维护。为什么还有用户名和密码?这不得不提到XMPP的具体细节。整个服务器端和客户端的通信是基于一个session(会话)过程,会话开始,首先会指定服务器的端口号,然后把上述提到的信息发送到服务器端,怎么发送消息的呢?以&stream&根节点的方式开始传递,只有在服务器和客户端关闭的时候才会发送它的结束标记&/stream&。客户端通过XMPP协议只用做的就是接收消息,而所有其它的操作都交给服务器,比如管理连接、消息保存等等,这样就很大程度的减轻了客户端的负担。那么客户端和服务器端的消息回应是如何实现的?如要通过一个ID来标识,具体细节可以去查看XMPP协议。
一旦注册绑定后,服务器端就和客户端建立了连接,客户端只用负责去接收消息。所以当我们应用Androidpn的时候,客户端会非常的简单。而在服务器端,Androidpn又做了什么呢?
服务器端的展示方面,androidpn主要用到的技术是Spring和Hibernate。主要是用来展示用户状态和发送信息用的,如下图:
这方面的技术已经比较成熟,就不再细说了,主要要说的还是XMPP的管理。在服务器端的源码中一个org.androidpn.server.xmpp.net.Connection类,主要是代表一个服务器上的XMPP连接,注意只是一个,它可以确保在服务器关闭的时候,发送一个&/stream&标记到客户端,告知连接断开,需重新连接。
org.androidpn.server.xmpp.session.SessionManager主要用户管理所有会话,比如连接断开,删除session以及建立连接,添加session等等。
而在管理Socket连接的时候,androidpn采用了MINA框架来进行管理,MINA的优点就是改变了我们传统的管理socket的方式,比如没建立一个socket开一个线程,而MINA可以实现多个线程管理N多个用户。在处理高并发的推送上无疑是有巨大的好处的。
合理的利用监听器来管理session,也是androidpn的优点。在安全性方面,制定了TLS(安全传输层)策略,并却采用了安全认证,这些方面都做的不错。
当然,不可避免的30秒钟的心跳包还是必不可少的。
总之,用Androidpn好处有以下方面:采用完全开放的XMPP协议进行数据传输(QQ,MSN,GTalk等都是采用的这种协议);良好的框架支持(专门为android 而产生的推送框架asmack,以及很好的管理socket的框架MINA,都是很成熟的产品);完全开放的源代码(我们可以在androidpn的基础上进行修改,来满足我们的任何需求变更);大大的减少了客户端的代码,降低了android的开发难度。缺点不言而喻,使用了太多的框架,如果想要改一些具体的实现,可能会迁移发动全身。不过如果你个懒人的话,完全满足你的需求了。
最后是我整理的androidpn的源码,完全可以使用。原来的服务器端用的jetty框架来代替tomcat的,我把它又重新整合到了tomcat下,可以完美的和你的服务器端融合。懒人们,来吧~~由于文件过大,所以用了外连~~喜欢的就去下载吧。。只需要改下client的raw文件夹下的ip地址就可以运行。。
不好意思。前段时间一直没找来一个可以分享的网盘。又懒,不想一一去发,对于那些发站内信的朋友,抱歉了。这个版本BUG很多,后来我也改了很多东西,才能在生产上使用。当然那个版本我是不能发放出来的。有问题大家可以问我。
等级: 初级会员
来自: 厦门
发表时间:&&
我不想当懒人!
请登录后投票
thinkinbunny
等级: 初级会员
发表时间:&&
好东西,绝对收藏,过几天要用到
请登录后投票
来自: 杭州
发表时间:&&
问题:1.asmack的包太大,3百多K。2.只是完成Android的Push功能使用XMPP协议感觉很笨重。3.androidpn服务器端的负载很难控制,除非自己改写。
请登录后投票
来自: 北京
发表时间:&&
zkl_1987 写道问题:
1.asmack的包太大,3百多K。
2.只是完成Android的Push功能使用XMPP协议感觉很笨重。
3.androidpn服务器端的负载很难控制,除非自己改写。
第一个问题关系不大,毕竟一个软件多了300多K不算什么,如果自己来控制socket连接,我估计没有100K也很难控制好。
第二个问题确实如此,使用XMPP的后果是带来了60%的信息冗余量
第三个问题,负载的控制应该来说,用到socket都必须要考虑的,负载方面,androidpn用到了MINA这个socket框架,而在socket的处理方面,很多人都是用的socket来处理的。
总的来说,源代码的开放是最大的优点,就算用到androidpn,无论如何也是要在原有的基础上进行修改的,照搬照抄肯定是不行的。但是比自己用socket来控制,在服务器和客户端之间建立一个网关,要来的容易。
不知道兄弟你是怎么实现的推送?
请登录后投票
等级: 初级会员
来自: 杭州
发表时间:&&
这个不错,有学习了新知识
请登录后投票
wuzhi11love
等级: 初级会员
发表时间:&&
源文件下载来后有两个文件,一个是Androidpn,androidpn-client,这两个文件应该怎么用啊?client应该就是推送的客户端吧,那怎么推送?改ip改到哪里啊?Androidpn那个又怎么用,谁能解释下呢?
请登录后投票
来自: 北京
发表时间:&&
wuzhi11love 写道源文件下载来后有两个文件,一个是Androidpn,androidpn-client,这两个文件应该怎么用啊?client应该就是推送的客户端吧,那怎么推送?改ip改到哪里啊?Androidpn那个又怎么用,谁能解释下呢?
client是手机端运行的源代码。androidpn是服务器端的,在tomcat下运行,ip是在client下的raw文件夹里改的。
请登录后投票
等级: 初级会员
来自: 北京
发表时间:&&
client 与 server 连接时,利用username区别, username 与client 是怎么关联的
请登录后投票
来自: 北京
发表时间:&&
bhylh 写道client 与 server 连接时,利用username区别, username 与client 是怎么关联的
androidpn里边利用的是client& UUID生成的,在第一次连接的时候注册绑定。。根据实际需要,可以自己进行拓展。
请登录后投票
& 上一页 1
跳转论坛:移动开发技术
Web前端技术
Java企业应用
编程语言技术我的NOTE5在推送6.0了。_note5吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:32,300贴子:
我的NOTE5在推送6.0了。
我的NOTE5在推送6.0了。到底升级不升级。纠结中。PDA:PB1 / CSC:PB1 / PHONE:PB1 (CHC)
报考一级消防师要求,学尔森13年考培经验为您解答,更有百度信贷分期付学费.
升级,必须的升级
我要买手机,请楼下告诉我有什么1499元起的手机,最好是新春特惠的
楼主你搞错了,,,   --来自三星Galaxy Note5客户端 
PBI不是6。0
pb1不是6.0,楼主你想多了
我要买手机,那个狗日的知道想买手机就出来和大家招呼一下,献丑献丑。
狗日的魅族呢?
报考二级消防师要求,学尔森13年考培经验为您解答,更有百度信贷分期付学费.
出来吧!1449元的魅族
PB1是5.1系统
这个不是18号发布的吗?不是6.0
这个早就推送了,楼主火星了
贴吧热议榜
使用签名档&&
保存至快速回贴 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
基于局域网的信息推送系统
下载积分:1500
内容提示:基于局域网的信息推送系统,基于局域网的
文档格式:PDF|
浏览次数:32|
上传日期: 20:48:16|
文档星级:
该用户还上传了这些文档
基于局域网的信息推送系统
官方公共微信每日交易数据推送 | 预测者网金融数据服务
数据样本 & 使用说明
订阅本产品后,在每个交易日的16:00,您的邮箱将会收到推送邮件。下载附件并且解压缩后得到两个文件,分别是当天沪深所有股票的交易数据,以及上证指数等主流指数当天的交易数据
数据为csv格式,GBK编码,方便程序导入
浏览数据时,建议使用WPS的表格软件、文本编辑器Notepad++、中文版EXCEL,不建议使用windows自带的记事本。若使用英文版EXCEL查看数据,会有乱码问题
每日推送数据的字段可能会不断的增加,新增的字段会排在原有字段的后面。原有字段的名称、顺序都不会改变
浏览数据时,如果显示如#########的多个#号字符,请将该列拉宽
关于数据的任何问题,可咨询官方QQ:,我们会在第一时间回复您
订购后,数据下载链接会在每天收盘后发送到您的邮箱。请在三天之内完成下载,过期链接将会失效。
若您有一定的编程能力,可以写一个简单的小程序,通过数据下载接口每天自动下载最新数据。下载接口使用说明请见
若有任何疑问请联系官方QQ:。
股票的代码,上证股票以sh开头,深证股票以sz开头
【change】
涨跌幅,复权之后的真实涨跌幅,保证准确
【volume】
【traded_market_value】
【market_value】
【turnover】
换手率,成交量/流通股本
【adjust_price】
后复权价,复权开始时间为股票上市日,精确到小数点后10位
【report_date】
最近一期财务报告实际发布的日期
【report_type】
最近一期财务报告的类型,3-31对应一季报,6-30对应半年报,9-30对应三季报,12-31对应年报
【PE_TTM】
最近12个月市盈率,股价 / 最近12个月归属母公司的每股收益TTM
【PS_TTM】
最近12个月市销率, 股价 / 最近12个月每股营业收入
【PC_TTM】
最近12个月市现率, 股价 / 最近12个月每股经营现金流
市净率,股价 / 最近期财报每股净资产
历史日线数据下载
一键下载所有沪深股票、自上市日(1990年)起每天的交易数据。
历史周线数据下载
一键下载所有沪深股票、自上市日(1990年)起每周的交易数据。
历史月线数据下载
一键下载所有沪深股票、自上市日(1990年)起每月的交易数据。
同步到&nbsp
,总体仓位
同步到&nbsp
涨跌幅会根据评级预测时间长短自动变化
您也可以发送邮件至联系我们

我要回帖

更多关于 如何实现消息推送 的文章

 

随机推荐