Closed rainzhaojy closed 6 years ago
指责XMPP属于PC时代而不适应Mobile时代似乎也是一种政治正确了,其实大多数的指责可能都是人云亦云,大多数人可能也并不深入了解XMPP协议。没错,XMPP诞生的时候还没有智能手机,因此并没有生来就为mobile而设计,XMPP协议也很繁杂,全面了解XMPP协议集并不那么容易,但是XMPP完整解决了IM通讯产品领域的绝大多数问题,很多问题解决的也很巧妙,这些设计思路和解决方案并不仅仅适用于XMPP,也适用于任何非XMPP的分布式通信产品中,因此即使不使用XMPP,了解这些巧妙的设计也是非常有用的,接下来介绍一些。
在mobile时代,多终端登录很常见,XMPP里bare jid(格式为"user@example.com")用于表示某个用户, full jid用于表示某个具体的endpoint(格式为"user@example.com/resourceID"), full jid里的resourceID很好的支持了多终端登录,你的产品里也许叫device id, location id, 但本质上和resource id是一样的思路。
XEP-0030定义了一种发现服务的机制。
XEP-0115定义了发现buddy能力的机制,方便的实现向前向后兼容。
用户"alice@cisco.com", "_xmpp-client._tcp.cisco.com", isj3cmx.webexconnect.com
指责XMPP属于PC时代而不适应Mobile时代似乎也是一种政治正确了,其实大多数的指责可能都是人云亦云,大多数人可能也并不深入了解XMPP协议。没错,XMPP诞生的时候还没有智能手机,因此并没有生来就为mobile而设计,XMPP协议也很繁杂,全面了解XMPP协议集并不那么容易,但是XMPP完整解决了IM通讯产品领域的绝大多数问题,很多问题解决的也很巧妙,这些设计思路和解决方案并不仅仅适用于XMPP,也适用于任何非XMPP的分布式通信产品中,因此即使不使用XMPP,了解这些巧妙的设计也是非常有用的,接下来介绍一些。
Resource ID
在mobile时代,多终端登录很常见,XMPP里bare jid(格式为"user@example.com")用于表示某个用户, full jid用于表示某个具体的endpoint(格式为"user@example.com/resourceID"), full jid里的resourceID很好的支持了多终端登录,你的产品里也许叫device id, location id, 但本质上和resource id是一样的思路。
Service Discovery
XEP-0030定义了一种发现服务的机制。
Capabilities
XEP-0115定义了发现buddy能力的机制,方便的实现向前向后兼容。
DNS SRV Lookup
用户"alice@cisco.com", "_xmpp-client._tcp.cisco.com", isj3cmx.webexconnect.com
Extensibility
Decentralized