在 openfire 中保持连接处于活动状态,但在 xmpp 中将用户显示为离线

Posted

技术标签:

【中文标题】在 openfire 中保持连接处于活动状态,但在 xmpp 中将用户显示为离线【英文标题】:Keep the connection alive in openfire but show user as offline in xmpp 【发布时间】:2016-10-12 08:55:37 【问题描述】:

我正在使用 openfire smack 库开发一个 android 聊天应用程序。我创建了一个绑定服务来在后台收听消息。连接对象也由服务维护。服务在收听后台消息时工作正常,但问题是当应用程序处于后台时,用户始终在线显示。保持连接也是必要的,以便用户可以收听消息,但此连接一直显示用户在线。我想在应用程序时显示用户离线在后台。还有一点,我是 android 应用程序和 xmpp 协议的初学者。如果您认为我的问题毫无意义,请不要投反对票,因为对于初学者来说,每个问题都有意义

【问题讨论】:

【参考方案1】:

要显示用户处于离线状态,您需要将状态发送到服务器,以便将其发布到您的花名册条目。现在您应该对其他用户显示为离线,但您的会话存在,因此 Openfire 会将您的消息路由给您。现在,当应用程序进入前台时,您可以再次发送您的出席信息,表明您有空。

【讨论】:

谢谢,但我也试过了。当我的状态设置为离线时,消息不会发送给我。。 那么你不能使用当前的逻辑,你必须在应用程序进入后台后断开 XMPP 连接(X 分钟后)。在 Openfire 端,将需要推送通知支持。但是没有官方插件。 openfire 中的 GCM 和 CallBackOnOffline 插件怎么样。我应该使用那个 CallBackOnOffline:使用提供的 URL 从 & 发送到消息的参数。因此,在这种情况下,您可以编写一个服务(使用 php 或任何服务器端语言)来接收来自该插件的请求,然后您可以将其转发给 GCM(同样是您自己的实现)。对于 GCM,如果您在谈论:github.com/meisterfuu/Openfire-GCM,那么它也在做同样的事情(发送到、从、消息到 URL) 但是你能告诉我如何使用 CallBackOnOffline 插件吗...我知道如何在服务器端实现 GCM 但是我如何将它与 CallBackOnOffline 插件一起使用...你的回答将是非常可观的..谢谢

以上是关于在 openfire 中保持连接处于活动状态,但在 xmpp 中将用户显示为离线的主要内容,如果未能解决你的问题,请参考以下文章

服务器断开连接后如何在 Spring MVC 中保持客户端会话处于活动状态

保持数据库连接始终处于活动状态的正确方法

保持 X11 应用程序处于活动状态,之后我可以断开连接并重新连接

IIS 回收应用程序池时如何保持 Blazor 服务器连接处于活动状态

iOS 应用程序如何在后台无限期地保持 TCP 连接处于活动状态?

关闭 SSH 时保持 Django 运行服务器处于活动状态