如何使用libstrophe构建一个jabber客户端

我正在尝试使用libstrophe库创建一个简单的Jabber客户端。

到目前为止,情况相当顺利,除了一件我需要澄清的事情。

也就是说,我应该如何(持续)知道联系人的状态(即在线/离线),以便我可以将其显示给我的程序用户? 同样,我该如何申请用户名单?

我查看了roster.c提供的roster.c示例,但只打印出一次名单。 在实际应用程序中,我需要连续请求/更新,以便在应用程序中显示用户添加的任何新联系人等。

所以基本上,我不清楚如何确保我总是在用户的联系人列表中显示最新的名单和最新状态。

我是否应该在某个预定义的时间间隔内请求名册?

名册和存在是两个不同的主题。

当您登录时,您通常会请求您已经在做的名单。 当您的联系人列出会话期间的更改时,您将获得更新联系人的名单推送 。 这是一节。 如果另一个登录的客户端操纵我们的客户名单并不重要。

在线状态称所有订阅联系人的存在都带有节。

您必须使用xmpp_handler_add设置处理程序

  1. 在线状态,存在节
  2. 花名册推送,iq节与查询命名空间jabber:iq:roster