Я реализую клиент xmpp (на Java).Может ли клиент перед подключением к серверу проверить, существует ли уже соединение для данного JID?Согласно: может ли клиент сервера xmpp отключить другого клиента от сервера? , сервер обычно отключает старое соединение, если один и тот же полный jid в форме "user @ host / resource" подключается из двух разных источников,Если пользователь подключается, например, из.Pidgin, веб-клиент и мой клиент, не всегда ли «ресурс» будет отличаться?Можно ли проверить с сервером, существует ли уже соединение с jid в форме «user @ host», без учета части ресурса?
Вы можете соединиться с user @ host / XXX, а затем, после отправки сообщения присутствие на свой Bare Jid (user @ host), вы должны получать сообщения о присутствии от любого другого клиента, подключенного с тем же Bare Jid(пользователь @ хост).
Лучше всего позволить серверу выбрать ресурс для вас.См. раздел 7.6.1 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>
Если пользователь подключается, например, с.Pidgin, веб-клиент и мой клиент, не будет ли «ресурс» всегда разным?
Да, для каждого из них будут разные ресурсы.Вы можете назначить один или, как сказал Джо Хильдебранд, вы можете просто позволить серверу создать для вас случайную строку ресурса .. Итак, чтобы ответить на ваш вопрос ..
Может ли клиент XMPP подключаться к серверу, если тот жеJID уже подключен?
Да, вы можете.