如何在XMPP中实现"last seen at"功能(如whatsapp)?



我正在研究一个聊天应用程序,并希望添加"最后一次看到"功能。我正试图通过使用存在节来实现它,但得到一个问题,请检查下面的链接

当用户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'。

一个解决方案是每次应用进入后台时终止会话,当应用进入前台时重新连接

相关内容

最新更新