为了账号安全,请及时绑定邮箱和手机立即绑定

请问在判断长连接状态方面没有什么更好的办法?

请问在判断长连接状态方面没有什么更好的办法?

慕姐8265434 2023-04-26 19:15:29
使用场景:1.使用javaPNS2_2做的与apns服务的连接,该连接是长连接形式,能够连接成功;2.在向apns服务发送消息时会对当前连接判断,使用的是java.net.Socket自带的isClosed、isOutputShutdown、isInputShutdown 三个方法进行判断,如果有一个是false那么关闭并重新连接。3.发送完毕后会获取当前发送的反馈信息,没有错误反馈。4.测试的手机token为有效的,连接apns反馈服务返回的不可用设备token为空。问题:刚启动服务或者自己编写的推送服务一直处于忙碌状态(向apns发送信息时间间隔较短)时手机设备可以收到推送,正常。如果较长时间(大约1小时左右)没有向apns发送信息,则会出现显示发送成功但是手机接收不到推送消息的情况,再次发送则手机收到推送(连续发送两次,第一次手机没收到,第二次以后都可以);如果很长时间(大约1晚上)没向apns发送信息,则不管发送多少次手机都接收不到推送。以上所有情况发生时,socket的判断都是连接可用。我一直怀疑长连接的问题,也看网上有人提过,他是每过一定时间(半小时还是一小时忘记了)就重启连接。但我觉得这个是取巧,也是逼不得已的情况下采取的措施。希望有做过的人给支支招,或者分析下可能的原因
查看完整描述

1 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

如果没用多线程推送的话,是很有可能出现推送异常的,因为如果有错误的token很有可能引起推送线程阻塞,那么其他的用户就推送不了了,当然引起线程阻塞的原因不止此一个,所以最好的办法是使用线程池做推送!

查看完整回答
反对 回复 2023-04-29
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信