基本原理

XMPP 实体是可网络寻址的、使用 XMPP 进行通信的实体。由于历史原因,XMPP 实体的原生地址被称为 Jabber 标识符或 JID。有效的 JID 是 Unicode 码点字符串,使用 UTF-8 编码,结构为 localpart、domainpart 和 resourcepart 的有序序列(其中前两部分由用作分隔符的 '@' 字符分隔,后两部分类似地由 '/' 字符分隔)。 JID 的语法如下:

domainpart

JID 的 domainpart 是 '@' 字符(如果存在)后面,'/' 字符(如果存在)前面的部分;它是主标识符,是 JID 的唯一必需元素(单纯的 domainpart 是有效的 JID)。通常,domainpart 标识客户端连接的“主”服务器,用于 XML 路由和数据管理功能。但是,XMPP domainpart 没必要标识提供核心 XMPP 服务端功能的实体(比如,domainpart 可以标识多用户聊天服务、发布/订阅服务或用户目录等实体)。

每个 XMPP 服务的 domainpart 必须是完全限定域名(FQDN)、IPv4 地址、IPv6 地址或非限定主机名(比如,可以在本地网络上解析的文本标签)。

localpart

JID 的 localpart 是可选的标识符,它位于 domainpart 的前面,与后者之间用 '@' 字符隔开。通常,localpart 唯一地标识请求及使用服务端提供的网络访问的实体(即本地账号),即便它也可以表示其它种类的实体(比如,与多用户聊天服务关联的房间)。由 XMPP localpart 表示的实体在特定域的上下文中进行寻址(即 <localpart@domainpart>)。

resourcepart

JID 的 resourcepart 是可选的标识符,它位于 domainpart 的后面,与后者之间用 '/' 字符隔开。resourcepart 可以修改 <localpart@domainpart> 地址,或 <domainpart> 地址。通常,resourcepart 唯一地标识特定的连接(比如,一个设备或位置)或属于域上与 XMPP localpart 关联的实体(即 <localpart@domainpart/resourcepart>)的对象(比如,多用户聊天室中的使用者)。


参考文档