Smack 4.1重新连接问题

sha*_*han 16 java sockets android xmpp smack

我正在开发一个聊天应用程序

  1. 我有一个持续运行的后台服务.
  2. 应用程序运行顺利,我能够毫无问题地接收和发送消息.
  3. 我正在使用默认的Smack 4.1重新连接管理器,它会在连接丢失后立即连接(几乎90%的时间).

但有时,当连接丢失时,Smack重新连接管理器停止工作.

我无法找出造成这个问题的原因.

当我检查我的手机后,经过12到14小时的延迟,我可以看到Android服务仍在运行,但XMPP重新连接已停止工作.然后我必须强制停止应用程序,然后重新启动服务并再次连接到XMPP服务器.

我的假设是当"电话网络从Wifi到数据或数据到Wifi"切换时.与此同时,Smack 4.1重新连接管理器停止工作.虽然,我不确定.

我有问题

  1. PingManager有什么用?PingManager在这种情况下可以提供帮助吗?
  2. 什么是StreamManagement?我该如何启用它?这种情况有用吗?

任何其他解决方案来解决这个问题?我在考虑以下解决方案:

  1. 要使用GCM以及XMPP,所以当XMPP无法重新连接时,我可以获得PUSH并在PUSH的基础上再次连接.
  2. 使用警报服务.(问题:由于连接丢失而在队列中的消息将取决于下一个警报计划)
  3. 每次用户返回应用程序时连接XMPP.(问题:因连接丢失而在队列中的消息将取决于用户返回应用程序)

ugu*_*gur 2

有点晚了,但也许对其他人有帮助。我不是 XMPP 专家,但我看到了一个名为“XMPP 和 Android”的 Ignite Realtime 演示文稿,它指出了这个问题以及如何处理这个问题。第 1 页

第2页

它提供了将服务器 ping 与警报管理器结合使用的功能,理想情况下间隔为 30 分钟。

我还发现了另一篇与此问题相关的帖子并提供了 3 个选项。值得一看。https://ramzandroidarchive.wordpress.com/2016/03/14/handling-connection-break-issue-in-smack-4-1/