我正在研究一个聊天应用程序,并希望添加"最后一次看到"功能。我正试图通过使用存在节来实现它,但得到一个问题,请检查下面的链接
当用户B不存在时,用户A不存在
是否有其他方法来实现最后一次看到的功能
请建议
Google搜索"xmpp last seen"的第一个结果是XEP-0012: last Activity,这是一个协议扩展,可用于查找用户上次在线的时间。
发送如下请求:
<iq from='romeo@montague.net/orchard'
id='last1'
to='juliet@capulet.com'
type='get'>
<query xmlns='jabber:iq:last'/>
</iq>
并得到如下的响应:
<iq from='juliet@capulet.com'
id='last1'
to='romeo@montague.net/orchard'
type='result'>
<query xmlns='jabber:iq:last' seconds='903'/>
</iq>
表示联系人最后一次在线时间是903秒前。
"Last seen"one_answers"Last Activity"是两个不同的场景。
Last Activity是用户最后一次脱机的时间,但Last seen是用户从应用程序进入后台的时间,在这种情况下,如果应用程序没有被杀死,用户将是可用的。
@legoscia解决方案将返回最后一次活动时间,这是您最后一次注销时间(而不是用户最后一次在线时),请检查此https://github.com/processone/ejabberd/issues/2265
当服务器接收到请求时,如果用户至少有一个连接的或可用的资源,则响应必须包含一个空元素,其'seconds'属性设置为'0'。
一个解决方案是每次应用进入后台时终止会话,当应用进入前台时重新连接