工作过程
(1)节点(如yb、pt)向本地服务器连接。
①XMPP 用户通过开启一个从客户端到服务器端的XML 流, 来申请一个在服务器上的Socket 连接。
SEND: <stream: stream
to=′sdpt.com′
xmlns=′jabber: client′
xmlns: stream=′http: //etherx.jabber.org/streams′>
②服务器通过开启一个从服务器到客户端的XML 流进行回复。
RECV: <stream: stream
from=′sdpt.com′
id=′180763465′
xmlns=′jabber: client′
xmlns: stream=′http: //etherx.jabber.org/streams′>
(2)节点向本地服务器申请登录。
①用户询问登录服务器时需提供的信息。
SEND: <iq id=′2′type=′get′>
<query xmlns=′jabber: iq: auth′>
<username>yb</username>
</query>
</iq>
②服务器回应用户, 告知用户登录所需要的信息。
③用户提供所需的信息。
④服务器响应一个空的类型为“result”的iq 元素, 表明登录成功。
RECV: <iq id=′3′type=′result′/>
⑤yb 用户发送当前状态给服务器, 表明其在线。
SEND: <presence>
<status>Online</status>
</presence>
(3)用户获得花名册, 好友增加一个联系人( 如yb 获知朋友sd 在线) 。
(4)用户间发送消息( 如yb 向sd 发送消息) 。
用户发送一条消息:
SEND: <message to′sd@jabber.org′>
<body>Where are you?</body>
</message>
服务器会根据XMPP 用户的会话信息加上一个源地址, 这样接收者收到消息时, 消息中已经包含了源地址。
(5)XMPP 服务器根据目标JID 中的域名查找、连接到目标服务器并进行认证(如sdpt.com 使用DNS 查找jabber.org, 连接到jabber.org 服务器上并进行认证) 。
(6)XMPP 服务器jabber.org 证实sd 连接到该服务器上, yb 被授权与sd 进行通信。
(7)数据在yb 与sd 间流动。
(8)用户退出, 退出时只需要关闭<stream>。
xmpp 工作过程
最新推荐文章于 2021-12-01 12:03:58 发布