Xmpp 更改其中一个花名册条目的状态信息后如何获取花名册

Xmpp 更改其中一个花名册条目的状态信息后如何获取花名册,xmpp,smack,Xmpp,Smack,我现在正在使用smack 4.1。发送状态后,我想要重新加载/刷新花名册,并在新花名册中获得更改。 比如说 我在花名册中有一个用户“A”的条目,类型为none,状态为null 然后,我已经发送了用户“A”的上述条目的订阅状态 现在我想重新加载并等待花名册不刷新(这与smack中提供的花名册.reloadAndWait()方法不同) 在花名册刷新之后,我将获得用户“A”的条目,其类型为“无”,状态为“订阅” 所以我的问题在这里 是否有一个简单的阻止调用来重新加载新的花名册?根据我的研究花名册。re

我现在正在使用smack 4.1。发送状态后,我想要重新加载/刷新花名册,并在新花名册中获得更改。 比如说

  • 我在花名册中有一个用户“A”的条目,类型为none,状态为null
  • 然后,我已经发送了用户“A”的上述条目的订阅状态
  • 现在我想重新加载并等待花名册不刷新(这与smack中提供的花名册.reloadAndWait()方法不同)
  • 在花名册刷新之后,我将获得用户“A”的条目,其类型为“无”,状态为“订阅”
  • 所以我的问题在这里

  • 是否有一个简单的阻止调用来重新加载新的花名册?根据我的研究花名册。reload()将发送IQ以重新加载,但在重新加载之前它不会阻止调用。ReloadWait()方法在boolean isLoaded的帮助下,在第二次和以后的调用中也执行相同的操作。ReloadWait方法只会在未加载的情况下第一次阻止调用(如果错误,请更正我)

  • 在smack中,当花名册重新加载操作完成(同步或异步)时,是否有方法获取回调

  • 是否可以请求重新加载单个讲台

  • 通过更新名册来验证存在变化的影响是否是一种良好的做法


  • 感谢您宝贵的建议和回答

    一般做法是在一次会话中不需要服务器多次提供名册

    XMPP中的预期工作流如下所示:

  • 在会议开始时申请名册。这不是强制性的,但通常是这样做的。请参阅以供参考
  • 根据您执行的花名册更改更新内存中的花名册状态。并不是说你将收到花名册更改确认,无论这是你当前执行更改的会话还是另一个使用相同JID(或)登录的客户端

  • 这样做,你的花名册将始终有一个内存中的表示,在整个课程中是最新的。这就是XMPP设计的工作流程。

    通常的方法是在会话期间不需要多次从服务器获取花名册

    XMPP中的预期工作流如下所示:

  • 在会议开始时申请名册。这不是强制性的,但通常是这样做的。请参阅以供参考
  • 根据您执行的花名册更改更新内存中的花名册状态。并不是说你将收到花名册更改确认,无论这是你当前执行更改的会话还是另一个使用相同JID(或)登录的客户端

  • 这样做,你的花名册将始终有一个内存中的表示,在整个课程中是最新的。这是XMPP设计的工作流程。

    感谢您提供的信息,但是很少有花名册状态取决于另一方的花名册条目。例如,如果用户“B”从其花名册中删除了用户“A”条目,则用户“A”的花名册将用户B的脏条目保留为None null。现在,如果我保持在内存花名册状态,那么在发送订阅状态后,我会将内存花名册条目更改为None subscribe,但它不是真的。我基本上是在寻找解决这个问题的方法。每次更新你都会收到一份花名册。当服务器更新花名册状态时,它会向您发送花名册推送。当您发送一个新查询时,它会向您发送回复中的最终状态。所以,我仍然看不出重新加载名册有什么帮助。的确,每次州变,我都会推动名册。但是,我的业务需求的一部分是确定最终状态,并在一点上提示用户,而不使用所有中间状态。就像当一个设备(A)没有连接到xmpp时,另一个设备(B)删除了它的条目并再次添加。现在,当设备A与xmpp连接时,它将获得所有中间更改,而最终结果没有任何更改(两人都是朋友,而且都仍然是朋友)。感谢您提供的信息,但很少有花名册状态取决于对方的花名册条目。例如,如果用户“B”从其花名册中删除了用户“A”条目,则用户“A”的花名册将用户B的脏条目保留为None null。现在,如果我保持在内存花名册状态,那么在发送订阅状态后,我会将内存花名册条目更改为None subscribe,但它不是真的。我基本上是在寻找解决这个问题的方法。每次更新你都会收到一份花名册。当服务器更新花名册状态时,它会向您发送花名册推送。当您发送一个新查询时,它会向您发送回复中的最终状态。所以,我仍然看不出重新加载名册有什么帮助。的确,每次州变,我都会推动名册。但是,我的业务需求的一部分是确定最终状态,并在一点上提示用户,而不使用所有中间状态。就像当一个设备(A)没有连接到xmpp时,另一个设备(B)删除了它的条目并再次添加。现在,当设备A与xmpp连接时,它将获得所有中间更改,而最终结果没有任何更改(两者都是朋友,并且仍然是朋友)。