xmpp是个什么呢?记得以前qq一个账号同一时间只能单独登陆,现在可以支持多个登陆了。
XMPP 抽象出一个在互联网上唯一的对象实体,用 JID 来表达。通常一个 JID 由三部分组成,node@domain/resource 。比 email 的表达形式多了一个 /resource 。就如同同一个ip,我们使用的是不同的port。google gtalk,spark,如意通都是基于xmpp的。通过这样xmpp可以支持多个登陆,只要resource在申请一个就可以了。
xmpp内部使用tcp来连接的,流程如下:
这里TLS 是什么呢?TLS是用来保护流的安全使其免于被篡改和窃听,是一个加密通道。客户端与服务器tcp连接后,服务器会发流特性给客户端(它是强制协商的),协商失败就会close tcp.协商成功后还要协商SASL。
XMPP特有的简单验证和安全层协议用于验证一个流. SASL提供一个一般化的方法来给基于连接的协议添加验证支持。XML字符串数据使用base 64编码就在这里协商的。base 64的详细介绍:http://zh.wikipedia.org/zh-cn/Base64
xmpp有三个顶层元素:Message、Presence、IQ
message:自然是用来发消息的,也可以发离线消息.
在线离线等状态,以及subscribe(订阅消息),亦可以广播消息到所有订阅者。这里客户端退出后会自动发一个leave状态给所有订阅者
<presence id="presenceID2" type="unavailable"><show>away</show><status>Leave</status></presence>
IQ:一种请求/响应机制,从一个实体从发送请求,另外一个实体接受请求,并进行响应.
Get:获取当前域值。