谁真正使用完整的 JID?

Posted

技术标签:

【中文标题】谁真正使用完整的 JID?【英文标题】:Who actually uses a full JID? 【发布时间】:2009-05-12 04:37:41 【问题描述】:

当通过 smack 登录 XMPP 服务器时,我只发送用户 ID/密码组合。

服务器组件是否真的在完整的 JID 中使用“resource”参数?

例如ali@someplace/资源

发送有什么好处?

【问题讨论】:

【参考方案1】:

如果您有多个客户端登录,资源会很有用。

例如,如果我在家中和工作时使用不同的资源为每个连接登录,那么我可以为每个连接设置我的状态。也许我在家,所以工作设置为xa,而家设置为聊天

当您拥有异构客户端并且您可以使用功能 (XEP-0115) 来区分客户端可以使用的功能时,资源会非常有用。

【讨论】:

【参考方案2】:

XMPP 有 3 种类型的节:message、presence 和 iq。只有裸 JID 的消息和存在才会被路由到客户端。带有裸 JID 的 iq 节将由服务器处理。

【讨论】:

【参考方案3】:

我认为对于大多数 jabber 用户来说,主要优势是为同时连接的不同客户端设置不同的存在。将其与存在节的priority 子项结合使用,您可以控制未定向(to="user@server")消息(阅读:消息节!)的去向。如果有一个,您的服务器将选择一个具有最高优先级的客户端,如果有多个,我认为实际行为未指定。而且,仅当所选客户端的优先级为非负数时,才会传递消息。

【讨论】:

以上是关于谁真正使用完整的 JID?的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.IllegalArgumentException:提供的用户 ID 不是完整的 JID (Smack)

如何获取 XMPP IOS 框架的 JID

关于ejabberd限制单点登录

如何使用 smack 和 java 从 jid 到 jid?

如何使用 agsXMPP 库注销 JID

如何检查用户 JID 是不是已在 XMPPFrameWork 中使用