如果已经连接了相同的 JID,XMPP 客户端可以连接到服务器吗?

Posted

技术标签:

【中文标题】如果已经连接了相同的 JID,XMPP 客户端可以连接到服务器吗?【英文标题】:Can XMPP client connect to server if the same JID is already connected? 【发布时间】:2011-06-14 11:49:36 【问题描述】:

我正在实现一个 xmpp 客户端(在 Java 中)。客户端是否可以在连接到服务器之前检查给定 JID 的连接是否已经存在? 根据:can client of the xmpp server disconnect other client from the server?,如果“user@host/resource”形式的相同完整 jid 从两个不同的源连接,服务器通常会断开旧连接。如果用户从例如连接。 Pidgin,网络客户端和我的客户端,“资源”不会总是不同吗?是否可以检查服务器是否已经存在“user@host”形式的 jid 连接,而忽略资源部分?

【问题讨论】:

***.com/questions/39918099/… 【参考方案1】:

您可以与 user@host/XXX 连接,然后在向您自己的 Bare Jid (user@host) 发送 presence 消息后,您应该会收到来自与同一 Bare 连接的任何其他客户端的在线消息吉德(用户@主机)。

【讨论】:

给你自己的裸 jid 的状态信息。我将更新答案以澄清它。【参考方案2】:

最好的办法是让服务器为你挑选资源。见section 7.6.1 of RFC 6120:

C: <iq id='tn281v37' type='set'>
     <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/>
   </iq>

S: <iq id='tn281v37' type='result'>
     <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'>
       <jid>
         juliet@im.example.com/4db06f06-1ea4-11dc-aca3-000bcd821bfb
       </jid>
     </bind>
   </iq>

【讨论】:

【参考方案3】:

如果用户从例如连接。 Pidgin,网络客户端和我的客户端,“资源”不会总是不同吗?

是的,每个都有不同的资源。您可以分配一个,或者如 Joe Hildebrand 所说,您可以让服务器为您创建一个随机资源字符串。所以回答您的问题..

如果已经连接了相同的 JID,XMPP 客户端可以连接到服务器吗?

是的,你可以。

【讨论】:

以上是关于如果已经连接了相同的 JID,XMPP 客户端可以连接到服务器吗?的主要内容,如果未能解决你的问题,请参考以下文章

谁真正使用完整的 JID?

xmpp如何获取当前连接jid名称

使用非 digid jid 连接到 facebook throw xmpp

XMPP JID 似乎总是为空

如何获取 XMPP IOS 框架的 JID

XMPP 带内注册(XEP-0077):与简单的 jid/pw 登录不同,都有哪些步骤?