JID对比实录:一个地址为何分两种
做JID对比,最容易看漏的不是软件功能,而是裸JID和完整JID的差别。下面用一个可复现的登录案例,还原账号创建、设备上线、消息路由到排错的全过程,并顺手讲清JID与邮箱、普通用户名到底哪里像、哪里完全不同。
问:这次拿什么做JID对比?
先说结论:JID不是聊天昵称,而是XMPP网络里的地址。为避免拿真实账号举例,这次使用保留域名构造测试地址:[email protected]。它属于裸JID,只包含本地部分和域名,适合标识一个账号。
同一账号在电脑端登录后,可以出现[email protected]/desktop;手机端则可能是[email protected]/phone。斜杠后面叫resource,也就是资源标识。两条完整JID看着像两个账号,其实都归到同一个裸JID下面。
问:消息发给两种JID,结果有何不同?
把消息发给[email protected],通常由服务器依据在线状态、客户端优先级等规则选择资源投递,具体行为还受服务器和客户端实现影响。日常聊天一般使用这种写法,换手机或电脑不会因为resource变化而找不到人。
若明确发给[email protected]/desktop,目标就具体到了桌面资源。这个资源一旦离线,消息可能无法按预期送达。实测排错时它很有用,普通联系人列表却没必要保存完整JID。
问:JID与邮箱、用户名怎么比?
JID和邮箱都长得像“名称@域名”,而且域名决定由哪台服务器负责,所以初看很像。但邮箱通过邮件协议收发信件,JID主要用于XMPP即时通信、群聊和状态管理,两者不能直接互发。
普通用户名往往只在一个网站内部有效,例如xiaolin;JID把服务器域名也写进地址,因此不同服务器上的用户可以区分并进行联邦通信。昵称更不可靠,同一个群里可以改名,也可能重名,不能拿来替代JID做身份核对。
问:案例里最值得记住什么?
这次JID对比的关键只有一句:认人看裸JID,认设备看完整JID。添加联系人、设置权限和核对账号时盯住@前后两段;分析多端登录、定向路由时,再检查斜杠后的resource。
还有个细节别忽略:实际JID应由客户端和服务器按XMPP规范处理,大小写、国际字符及转义不能凭肉眼随便改。复制地址比手敲稳妥,尤其不要把显示昵称误当成账号地址。
常见问题
裸JID和完整JID哪个更常用?
联系人、权限和日常发消息通常使用裸JID;完整JID主要用于识别某次具体登录或某台设备。
JID后面的resource能固定吗?
部分客户端允许设置,但也可能自动生成。它会随登录会话改变,不适合作为长期联系人地址。
JID和邮箱地址相同就能收到邮件吗?
不能据此判断。地址外形相似不代表该域名同时提供邮件服务,必须另查邮箱配置。