论坛首页 移动开发技术论坛

用androidpn来实现推送

浏览 217516 次
精华帖 (0) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-04-27  
Jclick 写道
仔细看看后台源码,如果有web开发经验的话,很容易看懂的。。


还是有一个问题,我昨天晚上10点连上服务器的,到凌晨1点,这段时间都是正常的可以正常接收,后来睡觉了我就把服务器在后台运行了,可是今天早上7点起来,看了一下,我服务器的session列表里面有我,但是我已经收不到信息了。这个问题要怎么解决呢?我用的是移动的2G卡,服务器部署在linux的tomcat上,服务器用的是电信网。

0 请登录后投票
   发表时间:2012-04-27  
cdztop 写道
Jclick 写道
仔细看看后台源码,如果有web开发经验的话,很容易看懂的。。


还是有一个问题,我昨天晚上10点连上服务器的,到凌晨1点,这段时间都是正常的可以正常接收,后来睡觉了我就把服务器在后台运行了,可是今天早上7点起来,看了一下,我服务器的session列表里面有我,但是我已经收不到信息了。这个问题要怎么解决呢?我用的是移动的2G卡,服务器部署在linux的tomcat上,服务器用的是电信网。


那就应该是重连机制没搞好,客户端已经掉线了,服务端却没发现。如果客户端30秒发一个心跳包的话,服务器端可以在10*30秒做一个监测,发一个空白文本到客户端,这样双方都可以监测。
0 请登录后投票
   发表时间:2012-04-27   最后修改:2012-04-27
Jclick 写道
cdztop 写道
Jclick 写道
仔细看看后台源码,如果有web开发经验的话,很容易看懂的。。


还是有一个问题,我昨天晚上10点连上服务器的,到凌晨1点,这段时间都是正常的可以正常接收,后来睡觉了我就把服务器在后台运行了,可是今天早上7点起来,看了一下,我服务器的session列表里面有我,但是我已经收不到信息了。这个问题要怎么解决呢?我用的是移动的2G卡,服务器部署在linux的tomcat上,服务器用的是电信网。


那就应该是重连机制没搞好,客户端已经掉线了,服务端却没发现。如果客户端30秒发一个心跳包的话,服务器端可以在10*30秒做一个监测,发一个空白文本到客户端,这样双方都可以监测。


我问一下,出现我上面的这个问题,应该是客户端的心跳没有起作用,我发现有时候它就不发心跳了。服务器端每收一次心跳后台就会打印log的,如下图所示。

因此我在想,客户端启动之后,他就固定30S发一个心跳的,服务器端的ip和端口都是固定的,服务器端不应该收不到心跳包的。可能还是客户端发心跳的这一块出问题的。

但是我刚才用的真机插到电脑里面,直接在Eclipse里面运行程序,它又是正常的。

这个问题我要如何测试,才能找到根源呢?

还有服务器端过很长时间都没有收到客户端的心跳了,它为什么都不关闭session呢?




  • 大小: 320.2 KB
0 请登录后投票
   发表时间:2012-04-27  
cdztop 写道
Jclick 写道
cdztop 写道
Jclick 写道
仔细看看后台源码,如果有web开发经验的话,很容易看懂的。。


还是有一个问题,我昨天晚上10点连上服务器的,到凌晨1点,这段时间都是正常的可以正常接收,后来睡觉了我就把服务器在后台运行了,可是今天早上7点起来,看了一下,我服务器的session列表里面有我,但是我已经收不到信息了。这个问题要怎么解决呢?我用的是移动的2G卡,服务器部署在linux的tomcat上,服务器用的是电信网。


那就应该是重连机制没搞好,客户端已经掉线了,服务端却没发现。如果客户端30秒发一个心跳包的话,服务器端可以在10*30秒做一个监测,发一个空白文本到客户端,这样双方都可以监测。


我问一下,出现我上面的这个问题,应该是客户端的心跳没有起作用,我发现有时候它就不发心跳了。服务器端每收一次心跳后台就会打印log的,如下图所示。

因此我在想,客户端启动之后,他就固定30S发一个心跳的,服务器端的ip和端口都是固定的,服务器端不应该收不到心跳包的。可能还是客户端发心跳的这一块出问题的。

但是我刚才用的真机插到电脑里面,直接在Eclipse里面运行程序,它又是正常的。

这个问题我要如何测试,才能找到根源呢?

还有服务器端过很长时间都没有收到客户端的心跳了,它为什么都不关闭session呢?







这玩意的服务端其实还有很多BUG的,比如这个就是其中一个,客户端不发送断开连接而是网络连接断开,并且客户端的自动重连机制不够健壮的话,服务端虽然在sessionmanager里有记录seession的最后一次会话时间却没有处理,写一个轮询的任务就可以解决这个问题,关键是你还要好好解决客户端的自动重连问题,那才是关键。
0 请登录后投票
   发表时间:2012-05-02  
楼主我正在做一个模拟QQ聊天的,想让你帮我修改一下你的xmpp
0 请登录后投票
   发表时间:2012-05-04  
求源码  22917735@qq.com
0 请登录后投票
   发表时间:2012-05-16  
刚刚下下来了,
明日好好学习一下先,
谢谢诸位前辈的努力,向你们致敬
0 请登录后投票
   发表时间:2012-05-21  
Jclick 写道
cdztop 写道
Jclick 写道
cdztop 写道
Jclick 写道
仔细看看后台源码,如果有web开发经验的话,很容易看懂的。。


还是有一个问题,我昨天晚上10点连上服务器的,到凌晨1点,这段时间都是正常的可以正常接收,后来睡觉了我就把服务器在后台运行了,可是今天早上7点起来,看了一下,我服务器的session列表里面有我,但是我已经收不到信息了。这个问题要怎么解决呢?我用的是移动的2G卡,服务器部署在linux的tomcat上,服务器用的是电信网。


那就应该是重连机制没搞好,客户端已经掉线了,服务端却没发现。如果客户端30秒发一个心跳包的话,服务器端可以在10*30秒做一个监测,发一个空白文本到客户端,这样双方都可以监测。


我问一下,出现我上面的这个问题,应该是客户端的心跳没有起作用,我发现有时候它就不发心跳了。服务器端每收一次心跳后台就会打印log的,如下图所示。

因此我在想,客户端启动之后,他就固定30S发一个心跳的,服务器端的ip和端口都是固定的,服务器端不应该收不到心跳包的。可能还是客户端发心跳的这一块出问题的。

但是我刚才用的真机插到电脑里面,直接在Eclipse里面运行程序,它又是正常的。

这个问题我要如何测试,才能找到根源呢?

还有服务器端过很长时间都没有收到客户端的心跳了,它为什么都不关闭session呢?







这玩意的服务端其实还有很多BUG的,比如这个就是其中一个,客户端不发送断开连接而是网络连接断开,并且客户端的自动重连机制不够健壮的话,服务端虽然在sessionmanager里有记录seession的最后一次会话时间却没有处理,写一个轮询的任务就可以解决这个问题,关键是你还要好好解决客户端的自动重连问题,那才是关键。

 

楼主,你好,我这也有Jclick同样问题,现在正在研究服务端的源码,如果你已经解决了这些问题,请分享下。

0 请登录后投票
   发表时间:2012-05-23  
客户端的重连不够健壮,服务端的检测掉线不太完善。

对于服务端,可以在xmppIOHandler里面的sessionCreate里加上
IoSessionConfig config = session.getConfig();
config.setIdleTime(IdleStatus.BOTH_IDLE, 150);

150秒没收到消息就认为掉线。

客户端改的太多。记不住了
0 请登录后投票
   发表时间:2012-06-03  
我也遇到了类似问题,当服务器重启后,客户端不能自动重连,麻烦楼主发一份给我吧,谢谢啦

sjx3232@126.com
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics