- 浏览: 450581 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (267)
- java (8)
- 求职&面试 (1)
- linux (33)
- windows (1)
- C++ (5)
- android (12)
- QT (1)
- 经验 (1)
- memory-leaks (1)
- Streaming&V/A (1)
- network&security (5)
- SCM (13)
- mysql (10)
- browsers (4)
- Windows APIs (2)
- opensource (1)
- pm (1)
- GDI (1)
- database (14)
- MFC (1)
- web&fronts (17)
- Tomcat (4)
- OLE (1)
- 观后感 (1)
- Production (2)
- UML (3)
- Javascript (7)
- Cloud Computing&SAAS (5)
- SoftwareEngineering (1)
- Computer&Maintenance (1)
- Web (8)
- Desgin (1)
- J2ee (10)
- mysql cluster (0)
- LB&HA (2)
- webserver (11)
- php (5)
- cas&authtication (0)
- Languages (1)
- IDEs (3)
- architecture (2)
- iOS (8)
- spring (3)
- webservices (1)
- security (1)
- MVCFrameworks (2)
- bservices (0)
- build-tools (2)
- unittest (1)
- spring-security (0)
- sphinx (2)
- hibernate (1)
- mybatis (2)
- search (0)
- nginx (2)
- design&production (2)
- DFS (0)
- algorithm (0)
- distributed&network (0)
- blogs (0)
- os&admin (0)
- fastcgi (0)
- kv-db (0)
- operation&maintenance (1)
- productions (9)
- 养生 (1)
- appserver (1)
- HTTP (2)
- test (1)
- erlang (2)
- browser (0)
- 非技术 (2)
- mobiles (2)
- cloud computing (2)
- Business (2)
- maven (1)
- python (5)
- 人生 (0)
- Cryptography (3)
- CV (0)
- cms (2)
- jqm (2)
- html (2)
- flex (1)
- redmine (1)
- iptables (1)
- groovy (1)
- scala (1)
- grails (1)
- ftp (3)
- vsftpd (2)
- lua (0)
- chroot (3)
- jailkit (3)
- UED (0)
- myeclipse (2)
- ide (2)
- eclipse (2)
最新评论
-
Nick712:
http://blog.csdn.net/victory08/ ...
处理SVN出现:Cleanup failed to process the following paths: xxx -
xs6262460:
Spring AOP根据JdbcTemplate方法名动态设置数据源 -
xhpscdx:
我的解决办法是把D:\ACRS\Projects\TAIS 下 ...
处理SVN出现:Cleanup failed to process the following paths: xxx -
hnraysir:
总结得相当不错,支持下。
使用CodeIgniter 创建 RESTful 服务 REST API【原创译文】 -
云上太阳:
这个必须评论下,间接的救过俺的命啊
解决tomcat启动报错,加强错误日志的显示:
解决androidpn服务器端掉线不会重连的问题
winktj 发布于 3个月前,共有 0 条评论
前面的一个项目里面用到了androidpn来做推送服务,众所周知androidpn这个项目还没成熟,还存在一点小bug。
我是从 https://github.com/dannytiehui/androidpn这里clone androidpn下来的,看说明已经解决了很多问题了。不过经过和服务器对接调试之后还是发现了存在客户端不会在服务端重启后,重新链接的问题。
google了一下,发现已经有兄弟提供了修正bug的办法。
里面提供的解决方法是
虽然我下载到的那个版本并不是上文所提到的,顺从他的思路或许就能解决问题。
androidpn出现这样的问题原因主要是因为PacketReader和PacketWriter里面对一些异常没有进行处理.
我是从 https://github.com/dannytiehui/androidpn这里clone androidpn下来的,看说明已经解决了很多问题了。不过经过和服务器对接调试之后还是发现了存在客户端不会在服务端重启后,重新链接的问题。
google了一下,发现已经有兄弟提供了修正bug的办法。
原文地址已经失效,以下是别人转的
http://topmanopensource.iteye.com/blog/1609214
里面提供的解决方法是
在org.androidpn.client.XmppManager的LoginTask方法中加了一行代码getConnection().startKeepAliveThread(xmppManager);跟踪进去发现是开启了一个线程发送心跳,当发送失败时捕获异常,客户端每隔一段时间进行重连。如上所说,在我添加 getConnection().startKeepAliveThread(xmppManager);之后的确是报错了,因为Xmppconnection里面没有这个方法,而文中所说的第二个版本我怎么找也没找到。(找到的同学能否发我一份?)catch (SocketException e) { Log.e("PacketReader", e.toString()); connection.disconnect(); xmppManager.startReconnectionThread(); } catch (IOException e) { e.printStackTrace(); }这样就达到了当与服务端失去连接时,客户端能够进行重新连接的效果。后来群里有朋友说在LoginTask方法中加入
getConnection().startKeepAliveThread(xmppManager); 编译就报错,那是因为他用的是第一个版本 ,所有请先下载第二个版本,第二个版本带大神精简过smack源码。 其实心跳机制在官方的asmack中就已经存在,并且在建立XmppConnection的时候就已经启动,但是遗憾的是asmack的开发人员并没有进行异常之后的重连
虽然我下载到的那个版本并不是上文所提到的,顺从他的思路或许就能解决问题。
androidpn出现这样的问题原因主要是因为PacketReader和PacketWriter里面对一些异常没有进行处理.
// Close the stream. try { writer.write("</stream:stream>"); writer.flush(); } catch (Exception e) { // Do nothing } finally { try { writer.close(); } catch (Exception e) { // Do nothing } }
解决思路是在LoginTask里面打开一个发送一个心跳包的线程,这个线程用于与检测与服务器的链接状况,当发生异常时,我们自己做重连的处理。
首先,在Xmmpmanager里面添加心跳包线程的内部类
评论
4 楼
scliu0718
2013-09-29
dagmom 写道
掉线重连的问题属于比较好解决的,原本login那块就有添加listener的,锁屏后系统休眠不在发送心跳,连接断开,这是需要我们手动利用android不会休眠的方法手动发送心跳
这个不用手动做吧。 在PackWriter中,做了这件事儿,有startKeepAliveProcess()方法是每隔30s发空串
3 楼
zfms
2013-08-14
如上所说,在我添加 getConnection().startKeepAliveThread(xmppManager);之后的确是报错了,因为Xmppconnection里面没有这个方法,而文中所说的第二个版本我怎么找也没找到。(找到的同学能否发我一份?)
楼主也发我一份吧。
楼主也发我一份吧。
2 楼
zfms
2013-08-14
如上所说,在我添加 getConnection().startKeepAliveThread(xmppManager);之后的确是报错了,因为Xmppconnection里面没有这个方法,而文中所说的第二个版本我怎么找也没找到。(找到的同学能否发我一份?)
也发我一份吧,我的qq 64738479 不胜感激
也发我一份吧,我的qq 64738479 不胜感激
1 楼
dagmom
2013-05-13
掉线重连的问题属于比较好解决的,原本login那块就有添加listener的,锁屏后系统休眠不在发送心跳,连接断开,这是需要我们手动利用android不会休眠的方法手动发送心跳
发表评论
-
android中实现消息推送
2013-04-18 11:45 1818android中实现消息推送 ... -
推荐10个Java开源CMS系统
2013-02-16 17:39 0推荐10个Java开源CMS系统 ... -
JavaMelody系统监控工具使用配置
2013-02-02 01:09 1347JavaMelody系统监控工具使用配置 2 ... -
Sun jdk、Openjdk、Icedtea jdk关系
2012-12-28 16:02 1123Sun jdk、Openjdk、Icedtea jdk ... -
android 9patch (讲的很不错,相当全面:转)
2012-12-21 14:29 988android 9patch (讲的很不错,相当全面 ... -
HttpClient压缩传输的代码,大部分都不靠谱,apache httpclient 官网的最靠谱,亲测!
2012-12-17 16:47 1192HttpClient压缩传输的代码,大部分都不靠谱,ap ... -
ios, anroid统一推送
2012-12-17 15:01 0Location: Home / HomeLang ... -
Android Service待机/睡眠时运行
2012-12-06 23:38 0Android Service待机/睡眠时运行 ... -
android中实现消息推送
2012-12-05 23:30 0android中实现消息推 ... -
androidpn的学习研究(五)【转】androidpn-client 常见BUG解决方法
2012-12-05 22:57 0androidpn的学习研究(五)【转】andro ... -
jetty http client 实现分析
2012-11-25 00:15 0jetty http client 实现分析 ... -
HttpClient的超时用法小记
2012-11-25 00:02 0HttpClient的超时用法小记 Ht ... -
关于 java.util.concurrent.RejectedExecutionException
2012-11-05 16:15 0关于 java.util.concurrent.Reje ... -
Android的网络请求中GZip的使用
2012-11-04 00:28 0Android的网络请求中GZip的使用 刚才去 ... -
HttpClient实现对GZip压缩的Response进行解压
2012-11-03 23:48 0HttpClient实现对GZip压缩的Respo ... -
为android的HttpClient添加请求超时时间
2012-11-03 23:36 0在以前做一个android的移动项目的时候, ... -
演化理解 Android 异步加载图片
2012-11-03 17:59 888演化理解 Android 异步加载图片 ... -
Android Activity和Intent机制学习笔记
2012-10-10 16:22 982Android Activity和Intent机 ... -
Android推送通知指南
2012-10-07 15:55 988Android推送通知指南 ... -
异常设计----何使用异常的原则
2012-09-19 17:49 908异常设计----何使用异常的原则 摘要 本文 ...
相关推荐
可以运行的androidpn服务器代码和客户端代码,服务器代码直接解压然后找到bin目录下面的run.bat文件双击运行即可,客户端的代码直接导入eclipse,改下raw/androidpn.properties里面的: apiKey=1234567890 xmppHost...
2. **自动重连机制**:在描述中提到,AndroidPN服务器在重启后能自动与客户端重新建立连接。这是通过客户端实现一个心跳检测机制来实现的,客户端定时向服务器发送“心跳”信息,如果服务器未收到一段时间内的“心跳...
AndroidPN(Android Push Notification)是一个专门针对Android平台设计的消息推送系统,其服务器端源码的开放为开发者提供了自定义和扩展的可能性。本文将深入探讨AndroidPN服务器端源码的关键知识点,帮助开发者...
androidpn 的客户端和服务器端源码. 使用说明: 解压后得到两个压缩包: androidpn-client.zip和androidpn-server-0.5.0-bin.zip, 解压两个包,Eclipse导入client,配置好目标平台,打开raw/androidpn.properties...
在本文中,我们将深入探讨如何解决AndroidPN服务端重启后客户端无法自动重连的问题。 首先,我们需要理解AndroidPN的工作原理。AndroidPN基于XMPP(Extensible Messaging and Presence Protocol)协议,这是一种...
根据提供的文件信息,我们可以深入探讨AndroidPN中有关“解决重连”的关键技术点。本文将从以下几个方面进行详细解析:服务管理、通知服务、XMPP管理器、持久连接监听器、通知包监听器、重新连接线程以及与这些组件...
AndroidPN客户端是安装在用户Android设备上的应用程序,它的主要任务是接收来自服务器端的消息并将其展示给用户。客户端通过注册一个唯一的设备ID到服务器,然后保持与服务器的持久连接,以便随时接收推送通知。这种...
AndroidPN是一种开源的推送框架,它基于XMPP协议,能够实现在Android客户端上接收来自服务器端的消息推送。与Google的C2DM(Cloud to Device Messaging)相比,AndroidPN在国内环境下更加实用,因为它避免了由于...
服务器端的实现是AndroidPN项目的核心部分。根据提供的链接,我们可以在CSDN博主wuhualong1314的文章中找到关于如何设置和修改服务器端代码的详细步骤。这篇文章详细介绍了如何搭建一个基于Java语言的AndroidPN...
在"androidpn推送服务器端+手机端(版本3.0)"的压缩包中,包含了实现这一功能的服务器端和客户端的源代码。 **服务器端知识点** 1. **推送服务架构**:AndroidPN服务器端基于XMPP(Extensible Messaging and ...
"AndroidPN 服务端和Android端源代码"是关于...这不仅可以加深对Android平台的理解,也有助于提升服务器端编程和网络通信技术。对于希望构建自己的推送服务或改进现有推送机制的开发者来说,这是一个宝贵的资源。
3. **部署应用**:将AndroidPN服务器端的WAR文件部署到Tomcat的`webapps`目录下,Tomcat会自动解压并启动应用。 ### 四、客户端集成 1. **获取注册ID**:在客户端应用中,首先需要注册到GCM/FCM并获取注册ID。 2. ...
这个项目通常需要与服务器端的组件配合工作,其中Tomcat作为常用的Java应用服务器,常常被用于部署AndroidPN的服务器端。 AndroidPN的核心机制是基于XMPP(Extensible Messaging and Presence Protocol)协议,这是...
在本篇文章中,我们将深入探讨AndroidPN服务器端的代码结构、功能模块以及运行环境需求。 首先,AndroidPN服务器主要由Java编写,它依赖于MySQL数据库存储用户信息和推送消息,以及Tomcat应用服务器来部署和运行。...
androidpn基于Xmpp的消息推送源码包含了完整的客户端和服务器端。androidpn客户端需要用到一个基于java的开源XMPP协议包asmack,这个包同样也是基于openfire下的另外一个开源项目smack,不过我们不需要自己编译,...
首先,`androidPN`这个文件夹很可能包含了整个项目源码,包括服务器端的Java代码、配置文件以及必要的库文件。在Eclipse中导入这个项目,通常需要执行以下步骤: 1. 打开Eclipse,选择“File” -> “Import”。 2. ...
6. **Java编程**:由于AndroidPN使用Java作为服务器端的主要编程语言,开发者需要熟悉Java SE和Java EE的相关概念,如Servlets、JSP、EJB等。 7. **Tomcat配置**:部署在Tomcat上的Java Web应用需要遵循特定的目录...
文件"**dannytiehui-androidpn-27607bf**"很可能是一个源码仓库或压缩包,包含了AndroidPN的完整实现,包括客户端和服务器端的代码。开发者可以通过下载并研究这些代码来了解AndroidPN的工作原理,或者直接将其作为...
服务器端基于tomcat,解决了断线重连等BUG,采用mysql数据库,注意修改hibernate配置文件中的用户名密码,直接导入工程可用,客户端如果ADT版本过高,就把lib改成libs,注意修改访问的服务器的ip地址!
Androidpn通过构建服务器端与客户端之间的通信管道,实现在需要时将消息高效推送到目标设备的功能。这一功能对于开发者来说至关重要,因为它能够帮助他们构建更智能、更省电、用户体验更佳的应用。 源代码中的注释...