如何阻止google随机化xmpp资源

如何阻止google随机化xmpp资源,xmpp,google-talk,Xmpp,Google Talk,在XMPP(即gtalk)中,我们可以根据需要设置资源(指定机器/位置/etc),这对所有/大多数服务器和客户端都很有效。但在谷歌的例子中,它并没有像预期的那样工作,因为每次用户连接时,谷歌都会向用户设置的资源追加随机字符串。这尤其令人恼火,因为许多客户端通过jid和资源部分区分用户聊天,这会导致在重新连接一个窗口/选项卡(并生成新资源)后打开多个窗口/选项卡 tl;dr-有没有办法阻止谷歌在用户设置的资源中添加随机字符串?简短回答,没有办法。出于安全原因,资源应该是不可预测的。GTalk服务器

在XMPP(即gtalk)中,我们可以根据需要设置资源(指定机器/位置/etc),这对所有/大多数服务器和客户端都很有效。但在谷歌的例子中,它并没有像预期的那样工作,因为每次用户连接时,谷歌都会向用户设置的资源追加随机字符串。这尤其令人恼火,因为许多客户端通过jid和资源部分区分用户聊天,这会导致在重新连接一个窗口/选项卡(并生成新资源)后打开多个窗口/选项卡


tl;dr-有没有办法阻止谷歌在用户设置的资源中添加随机字符串?

简短回答,没有办法。出于安全原因,资源应该是不可预测的。GTalk服务器通过向您的资源中添加一个随机字符串来强制执行此操作。

除了@Alex的正确答案之外,不要在语义上使用资源。对于聊天,客户端真的不应该再将每个资源视为单独的对话。我们十多年前就吸取了这一教训。要识别客户端,请使用而不是硬编码的资源。

您能解释一下为什么它不可预测吗?我一直喜欢向某些资源发送消息(例如
alice@example.org/手机
如果有紧急情况,
alice@example.org/主页
if not)当我可以猜到你的资源并知道你的jid时,我可以用IQ向你发送垃圾邮件。只有你猜到/知道资源时,这种“IQ”垃圾邮件才可能出现?因此,不可能简单地使用
alice@example.org
没有指定任何资源?是的,IQ总是发送到完整的jid(有些例外,如vcard),然后您不会显示它,但它仍然通过网络路由到您的客户端,这是不好的。只要使用不可预测的资源,你就没事了。今天我们有其他的xmpp协议扩展,如caps或disco,以公开我们多年前在资源中放入的内容,直到我们找到更好的方法。另请参见上面Joe的回答。您所指的“我们在十年前就学到了这个教训”是什么?好的,但在这种情况下,我们在哪里/如何调整资源优先级?更不用说对我们要将信息发送到哪里(即发送到什么“终点”)的任何控制了?@Joe Hildebrand您介意回答要求澄清的评论吗?