Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XMPP:使客户端仅对该客户端的其他实例显示为联机_Xmpp - Fatal编程技术网

XMPP:使客户端仅对该客户端的其他实例显示为联机

XMPP:使客户端仅对该客户端的其他实例显示为联机,xmpp,Xmpp,我想使用XMPP作为桌面应用程序的消息总线。由于应用程序将使用用户现有的XMPP帐户(GTalk或类似帐户),并且不提供IM服务,因此我希望使我的客户端实例对其他XMPP客户端不可见 为了做到这一点,我正在考虑使用客户端服务发现和隐私列表来阻止发送到除我自己以外的所有客户端的外出状态通知。然而,我对这种方法的可伸缩性和健壮性表示怀疑。有没有更好的方法来实现这一点 编辑: 我现在在想,我能做的最接近这种行为的方法就是设置一个负面的优先权。这将有助于减少用户的困惑,并在相当普遍的情况下发挥作用。没有

我想使用XMPP作为桌面应用程序的消息总线。由于应用程序将使用用户现有的XMPP帐户(GTalk或类似帐户),并且不提供IM服务,因此我希望使我的客户端实例对其他XMPP客户端不可见

为了做到这一点,我正在考虑使用客户端服务发现和隐私列表来阻止发送到除我自己以外的所有客户端的外出状态通知。然而,我对这种方法的可伸缩性和健壮性表示怀疑。有没有更好的方法来实现这一点

编辑:

我现在在想,我能做的最接近这种行为的方法就是设置一个负面的优先权。这将有助于减少用户的困惑,并在相当普遍的情况下发挥作用。

没有您需要的工具,因为您无法了解您必须直接访问的其他客户。。。因为它们是隐形的


如果你的所有客户都加入了一个房间,怎么样?

我稍微掩饰了一下细节-我想我可以阻止所有外出的状态,进入可用状态,使用disco查找所有不是我的客户,然后切换到阻止状态到那些特定的完整Jid(有资源),然后重新发送可用状态。然后更新隐私列表,因为除我自己的客户之外,还有更多的出现节。我认为GTalk不支持隐私列表,所以现在已经过时了。我得想一想怎么用MUC来代替——谢谢。为什么?根据我对规范的阅读,对传出状态的初始阻止不应影响传入状态。如果存在缺少
,那么完整的JID可能会在隐私列表中被阻止。如果状态具有
客户端对客户端迪斯科请求的
交换将不会因隐私列表中阻止传出状态而受到阻碍。除了GTalk不支持隐私列表之外,我所看到的唯一一件事可能会妨碍这种方法(除了它的笨拙)隐私列表是否会对赤裸裸的JID而不是完整的JID产生影响。因为它们可以在每个流的基础上被激活,我假设不是这样的-你能为我澄清一下吗?如果是你的客户在另一边,你不会从它那里得到存在,所以标签对你没有帮助。你自己的裸JID中的迪斯科项目通常不会以资源列表进行响应,而其他人的JID中的迪斯科项目不应返回其资源,因为这将是一个存在漏洞。我说过,在切换到阻止特定完整JID的存在之前,我只会首先阻止出站存在。然后,您可能会发现这个答案的部分内容很有帮助: