对XMPP客户端而言,首先查询 DNS 中的 SRV 记录如:_xmpp-client._TCP.example.com 。从而获得 xmpp
server 的 hostname 和 port,然后使用这个进行连接。如果没有找到 SRV 记录,则会直接使用该 domain 和 默认端口进行连接。所以需要在DNS中设置 SRV 记录。
比如在Windows上可以使用 nslookup 命令查询 srv 的配置(linux就用 dig 命令):
nslookup -qt=SRV _xmpp-client._TCP.gmail.com
得到的是 Google Talk 服务的SRV配置,Google Talk 使用的xmpp hostname 是 talk.google.com。
参考资料:
tim yang 的 blog XMPP/Jabber服务器的SRV DNS配置
SRV record 的定义 http://en.wikipedia.org/wiki/SRV_record
XMPP RFC 3920 中的关于 SRV 的说明 http://xmpp.org/rfcs/rfc3920.html#rfc.section.14.3
Google Talk 的XMPP Service说明 http://code.google.com/apis/talk/open_communications.html
如果用 Smack api 作为xmpp client api,smack 中使用的是 org.jivesoftware.smack.util.DNSUtil 的方法按照上述原则执行查找的。
没有评论:
发表评论