假设我有两个JID:
bob@example.com
room@chat.example.com
JID 2明确指的是聊天服务器,但聊天服务器并不总是在其中包含单词chat或conference。
有没有办法,使用Smack库,告诉哪一个是哪个?
答案 0 :(得分:2)
通过查看JID你无法分辨。您必须在给定的协议交换中保留足够的上下文,以了解您正在与之交谈的内容。
通常在启动时,客户端会向服务器发送disco#items
查询:
<iq type='get'
to='shakespeare.lit'
id='items1'>
<query xmlns='http://jabber.org/protocol/disco#items'/>
</iq>
找到所有本地服务,然后向每个服务发送disco#info
查询以查找有关该服务的更多信息。一旦你find a MUC server:
<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会议室相关联。
答案 1 :(得分:0)
MUC中的用户JID将(应该)在最后具有用户名,并且看起来像:
roomname@conference.example.com/username