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

时间:2011-06-14 11:49:37

标签: client-server xmpp

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

3 个答案:

答案 0 :(得分:3)

您可以使用user @ host / XXX进行连接,然后在向您自己的Bare Jid(用户@主机)发送状态消息后,您应该会收到与使用相同Bare连接的任何其他客户端的状态消息Jid(user @ host)。

答案 1 :(得分:1)

最好的办法就是让服务器为您挑选资源。见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>

答案 2 :(得分:0)

  

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

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

  

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

是的,你可以。