假设我有两个 JID:
- 吉德 1:
bob@example.com
- 吉德 2
room@chat.example.com
JID 2 显然是指聊天服务器,但聊天服务器中并不总是包含聊天或会议一词。
有没有办法使用 Smack 库来判断哪个是哪个?
假设我有两个 JID:
bob@example.com
room@chat.example.com
JID 2 显然是指聊天服务器,但聊天服务器中并不总是包含聊天或会议一词。
有没有办法使用 Smack 库来判断哪个是哪个?
您无法通过查看 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 房间相关联。
MUC 中的用户 JID 将(应该)在末尾有用户名,看起来像:
roomname@conference.example.com/username