Openfire 4.3.2 流管理无法正常工作

Posted

技术标签:

【中文标题】Openfire 4.3.2 流管理无法正常工作【英文标题】:Openfire 4.3.2 Stream Managment not Working Propelry 【发布时间】:2019-05-03 12:18:12 【问题描述】:

我正在使用 openfire 4.3.2 作为我的 XMPP 聊天服务器,我的问题是当我突然关闭应用程序时,几秒钟后我再次打开应用程序时我没有收到这些消息(发送那几个我的应用程序关闭时的秒数)这是我的服务器的属性。

httpbind.CORS.domains   *
httpbind.CORS.enabled   true
httpbind.enabled    true
httpbind.forwarded.enabled  false
log.debug.enabled   true
passwordKey     hidden
plugin.callback_on_offline.debug    true
plugin.callback_on_offline.send_body    true
plugin.callback_on_offline.token    884d8014-006f-4495-8290-7b53801c8f89
plugin.callback_on_offline.url  http://ec2-*-***-***-***.compute-1.amazonaws.com:3000/user/offline/message
plugin.userservice.secret   WjVSdHFw
provider.admin.className    org.jivesoftware.openfire.admin.DefaultAdminProvider
provider.auth.className     org.jivesoftware.openfire.auth.DefaultAuthProvider
provider.group.className    org.jivesoftware.openfire.group.DefaultGroupProvider
provider.lockout.className  org.jivesoftware.openfire.lockout.DefaultLockOutProvider
provider.securityAudit.className    org.jivesoftware.openfire.security.DefaultSecurityAuditProvider
provider.user.className     org.jivesoftware.openfire.user.DefaultUserProvider
provider.vcard.className    org.jivesoftware.openfire.vcard.DefaultVCardProvider
register.inband     true
register.password   hidden
sasl.mechs.00002    PLAIN
sasl.scram-sha-1.iteration-count    4096
stream.management.active     true
update.lastCheck    1556532896226
xmpp.auth.anonymous     true
xmpp.client.idle    600000
xmpp.client.idle.ping   true
xmpp.domain     18.224.19.131
xmpp.filetransfer.enabled   true
xmpp.server.session.allowmultiple   false
xmpp.server.session.idle    600000
xmpp.server.session.timeout     600000
xmpp.session.conflict-limit     1
xmpp.socket.ssl.active  true 

我在我的 android 代码中使用 Smack 4.3.2。 我注意到一件事,如果我没有关闭应用程序只是关闭连接并在重新连接后,一切正常,但如果我关闭应用程序,我不会收到消息。我该如何解决这个问题

【问题讨论】:

【参考方案1】:

我认为你的问题可能是这个配置参数或 openfire ghost 会话存在:

xmpp.client.idle 600000(10 分钟)

这是客户端空闲超时,如果服务器没有成功 ping 客户端,客户端将断开连接。您应该重新考虑此参数的值,并将其降低到适合您需要的合理值。对我来说是30秒。在该客户端断开连接后,如果启用了离线消息,所有消息都会进入离线存储。

还有一个keepalive机制的错误。请检查:

https://issues.igniterealtime.org/browse/OF-963

报告了 4.0.3 版本的问题。

【讨论】:

【参考方案2】:

我认为有两个可能的原因。 您应该明确做的一件事是在应用程序关闭时立即关闭连接。有一种 onClose 功能。因为连接可能仍然可用一段时间或处于空闲状态。

另一个原因(我不相信),我在我的 openfire 界面中有一个选项,我可以选择如何处理脱机消息。所以你的版本也必须有一个属性。

还有一个keepalive机制的错误。请检查:

https://issues.igniterealtime.org/browse/OF-963

报告了 4.0.3 版本的问题。

【讨论】:

以上是关于Openfire 4.3.2 流管理无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

带有 Openfire 的 Candy webclient,无法正常工作

Openfire Xmpp Chat 无法在启用 SSL 的情况下工作

安装 ssl 证书后 strophe js 无法正常工作

Android 文件传输无法通过 XMPP 和 OpenFire 工作

通过 PHP 的 Openfire 离线通知

XMPP iOS:无法连接 openfire 服务器