xmpp 工作过程

工作过程
(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′[email protected]′>
     <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>。

你可能感兴趣的:(工作,xml,socket)