问题描述
我们正在为我们的应用程序使用 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'/>