版权所有,转载请注明出处:http://guangboo.org/2013/02/21/xmpp-communication
XMPP协议描述了全局唯一的通讯地址,就像email地址一样,并且协议还描述了XMPP服务器之间的通讯,使得XMPP通讯不局限于域内,而且支持跨域的通讯,也就是说jid为user1@example.net的用户也可以与jid为user1@example.org的用户进行通讯,具体通讯过程如下图:
XMPP客户端只能连接当前域的XMPP服务器,并完成验证,绑定资源等操作。客户端之间的通讯,如在同一域内则不必多说,当需要跨域通讯时,那么服务器端负责服务器直接的通讯。因此服务器端不仅协调客户端之间的消息交换,而且要负责服务器间的消息交换。
这里以使用TCP连接为例介绍XMPP通讯的过程:
初始化流 | 响应流 | 说明 |
---|---|---|
<stream> | 发送初始化流 | |
<stream> | 服务器端响应 | |
<presence> <show/> </presence> | 发送出席状态 | |
<message to='user1@example.net'> <body/> </message> | 发送消息给user1@example.net | |
<iq to='example.net' type='get'> <query/> </iq> | 向服务器做查询操作 | |
<iq from='example.net' type='result'> <query/> </iq> | 返回查询结果 | |
[...] | 发送其他消息 | |
[...] | 服务器反馈 | |
</stream> | 关闭流 | |
</stream> | 关闭流 |
以上大部分xml片段都是非常简短的,实际的XML将会有许多属性和子节点。
联系客服