如果已经连接了相同的 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 客户端可以连接到服务器吗?的主要内容,如果未能解决你的问题,请参考以下文章