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