用户在 OpenFire 中在线显示,即使应用程序处于后台或处于终止状态

问题描述

我们正在为我们的应用程序使用 XMPPFramework 和 Openfire(版本:4.6.2)。

杀死应用程序或将其置于后台模式后,仍然显示用户在线几分钟,然后变为离线。

我们尝试了空闲连接策略时间,但仍然一无所获。

欢迎提出建议。

解决方法

我在一个项目中遇到过类似的问题,经过调查发现是在使用流恢复功能(流管理 XEP-0198)时发生的。

如果在启动新流时启用流恢复,Openfire 不会立即将用户标记为离线,而是将其会话标记为分离状态。因此客户端应用程序可以再次恢复流,而无需完全登录。

如果您不使用流恢复,用户将立即离线。

启用流管理时,如果客户端发送以下数据包,则在流上启用恢复功能。

<enable xmlns='urn:xmpp:sm:3' resume='true'/>

对于这个数据包,服务器通过发回确认:

<enabled xmlns='urn:xmpp:sm:3' id='some-long-sm-id' resume='true'/>