1

假设我有两个 JID:

  • 吉德 1:bob@example.com
  • 吉德 2 room@chat.example.com

JID 2 显然是指聊天服务器,但聊天服务器中并不总是包含聊天或会议一词。

有没有办法使用 Smack 库来判断哪个是哪个?

4

2 回答 2

2

您无法通过查看 JID 来判断。您必须在给定的协议交换中保留足够的上下文才能知道您在说什么。

通常在启动时,客户端将向服务器发送disco#items查询:

<iq type='get'
    to='shakespeare.lit'
    id='items1'>
  <query xmlns='http://jabber.org/protocol/disco#items'/>
</iq>

查找所有本地服务,然后向每个服务发送disco#info查询以了解有关该服务的更多信息。找到MUC 服务器后

<iq from='chat.shakespeare.lit'
    type='result'>
  <query xmlns='http://jabber.org/protocol/disco#info'>
    <identity
        category='conference'
        name='Shakespearean Chat Service'
        type='text'/>
    <feature var='http://jabber.org/protocol/muc'/>
  </query>
</iq>

您知道所有包含此域名的 JID(chat.shakespeare.lit在上面的示例中)都与 MUC 房间相关联。

于 2014-02-02T09:49:52.157 回答
0

MUC 中的用户 JID 将(应该)在末尾有用户名,看起来像:

roomname@conference.example.com/username
于 2014-01-31T20:54:33.927 回答