XMPP 連接登錄過程


 本文對於剛開始XMPP的學習者非常有用,初始登錄過程主要包括如下基本步驟:
   1.  查詢和使用TLS
   2.  查詢和使用SASL並使用賬戶密碼登錄
   3.  bind資源
   4.  廣播自己的出息信息並接受Server廣播的出息信息
   5.  下載自己的Roster,vcard, block, disc, bookmark等信息

  1. ####client下線  
  2. <presence type="unavailable">  
  3. <status>Logged out</status>  
  4. </presence>  
  1. ####client發起連接  
  2. <?xml version="1.0"?>  
  3. <stream:stream xmlns:stream="http://etherx.jabber.org/streams" version="1.0" xmlns="jabber:client" to="xumatomacbook-pro.local" xml:lang="en" xmlns:xml="http://www.w3.org/XML/1998/namespace">  
  1. ####server相應並回複驗證的features  
  2. <?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='xumatomacbook-pro.local' id='675c6847-c13d-4710-9844-d9339e4df087' version='1.0' xml:lang='en'>  
  3.   
  4. <stream:features>  
  5. <ver xmlns="urn:xmpp:features:rosterver"/>  
  6. <starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>  
  7. <mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl">  
  8. <mechanism>PLAIN</mechanism>  
  9. <mechanism>ANONYMOUS</mechanism>  
  10. </mechanisms>  
  11. <register xmlns="http://jabber.org/features/iq-register"/>  
  12. <auth xmlns="http://jabber.org/features/iq-auth"/>  
  13. </stream:features>  
  1. ####client啓動tls驗證  
  2. <starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>  
  1. ####server表示支持,可以繼續  
  2. <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>  
  1. ####tls驗證結束,重新開始  
  2. <?xml version="1.0"?>  
  3.   
  4. <stream:stream xmlns:stream="http://etherx.jabber.org/streams" version="1.0" xmlns="jabber:client" to="xumatomacbook-pro.local" xml:lang="en" xmlns:xml="http://www.w3.org/XML/1998/namespace">  
  1. ####server響應,並返回下一步驗證支持的features,sasl  
  2. <?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='xumatomacbook-pro.local' id='675c6847-c13d-4710-9844-d9339e4df087' version='1.0' xml:lang='en'>  
  3.   
  4.   
  5. <stream:features>  
  6. <ver xmlns="urn:xmpp:features:rosterver"/>  
  7. <mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl">  
  8. <mechanism>PLAIN</mechanism>  
  9. <mechanism>ANONYMOUS</mechanism>  
  10. </mechanisms>  
  11. <register xmlns="http://jabber.org/features/iq-register"/>  
  12. <auth xmlns="http://jabber.org/features/iq-auth"/>  
  13. </stream:features>  
  1. ####client開始sasl驗證  
  2. <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="PLAIN">AGd1YW5mZWkAZ3VhbmZlaQ==</auth>  
  1. ####server表示成功了  
  2. <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>  
  1. ####client重新開始  
  2. <?xml version="1.0"?>  
  3.   
  4.   
  5. <stream:stream xmlns:stream="http://etherx.jabber.org/streams" version="1.0" xmlns="jabber:client" to="xumatomacbook-pro.local" xml:lang="en" xmlns:xml="http://www.w3.org/XML/1998/namespace">  
  1. ####server響應並返回支持的features  
  2. <?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='xumatomacbook-pro.local' id='675c6847-c13d-4710-9844-d9339e4df087' version='1.0' xml:lang='en'>  
  3.   
  4.   
  5. <stream:features>  
  6. <ver xmlns="urn:xmpp:features:rosterver"/>  
  7. <session xmlns="urn:ietf:params:xml:ns:xmpp-session"/>  
  8. <register xmlns="http://jabber.org/features/iq-register"/>  
  9. <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/>  
  10. </stream:features>  
  1. ####client請求resource bind  
  2. <iq type="set" id="bind_1">  
  3. <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">  
  4. <resource>Psi+</resource>  
  5. </bind>  
  6. </iq>  
  1. ####server判斷並返回結果  
  2. <iq xmlns="jabber:client" type="result" id="bind_1" to="[email protected]/Psi+">  
  3. <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">  
  4. <jid>[email protected]/Psi+</jid>  
  5. </bind>  
  6. </iq>  
  1. ####client發起session  
  2. <iq type="set" id="ab46a">  
  3. <session xmlns="urn:ietf:params:xml:ns:xmpp-session"/>  
  4. </iq>  
  1. ####server端響應  
  2. <iq type="result" id="ab46a" to="[email protected]/Psi+"/>  
  1. ####client端請求roster列表  
  2. <iq type="get" id="ab47a">  
  3. <query xmlns="jabber:iq:roster"/>  
  4. </iq>  
  1. ####server端返回  
  2. <iq type="result" id="ab47a" to="[email protected]/Psi+">  
  3. <query xmlns="jabber:iq:roster">  
  4. <item subscription="both" name="ohno" jid="[email protected]"/>  
  5. </query>  
  6. </iq>  
  1. ####client廣播自己的出席信息  
  2. <presence>  
  3. <priority>50</priority>  
  4. <c xmlns="http://jabber.org/protocol/caps" node="http://psi-dev.googlecode.com/caps" ver="0.16" ext="ca cs e-time ep-notify-2 html last-act mr sxe whiteboard"/>  
  5. </presence>  
  1. ####client請求自己的個人信息  
  2. <iq type="get" id="ab49a">  
  3. <query xmlns="jabber:iq:privacy"/>  
  4. </iq>  
  1. ####client請求bookmark  
  2. <iq type="get" id="ab4aa">  
  3. <query xmlns="jabber:iq:private">  
  4. <storage xmlns="storage:bookmarks"/>  
  5. </query>  
  6. </iq>  
  1. ####client請求個人vcard  
  2. <iq type="get" to="[email protected]" id="ab4ba">  
  3. <vCard xmlns="vcard-temp"/>  
  4. </iq>  
  1. ####client請求disco列表  
  2. <iq type="get" to="xumatomacbook-pro.local" id="ab4ca">  
  3. <query xmlns="http://jabber.org/protocol/disco#info"/>  
  4. </iq>  
  1. ####server廣播出席信息  
  2. <presence from="[email protected]/Psi+" to="[email protected]">  
  3. <priority>50</priority>  
  4. <c xmlns="http://jabber.org/protocol/caps" node="http://psi-dev.googlecode.com/caps" ver="0.16" ext="ca cs e-time ep-notify-2 html last-act mr sxe whiteboard"/>  
  5. </presence>  
  1. ####server返回個人信息項列表  
  2. <iq type="result" id="ab49a" to="[email protected]/Psi+">  
  3. <query xmlns="jabber:iq:privacy">  
  4. <list name="blocked"/>  
  5. <default name="blocked"/>  
  6. <active name="blocked"/>  
  7. </query>  
  8. </iq>  
  1. ####client請求block項內容  
  2. <iq type="get" id="ab4da">  
  3. <query xmlns="jabber:iq:privacy">  
  4. <list name="blocked"/>  
  5. </query>  
  6. </iq>  
  1. ####server返回bookmark信息  
  2. <iq type="result" id="ab4aa" to="[email protected]/Psi+">  
  3. <query xmlns="jabber:iq:private">  
  4. <storage xmlns="storage:bookmarks"/>  
  5. </query>  
  6. </iq>  
  1. ####server返回vcard信息  
  2. <iq from="[email protected]" type="result" to="[email protected]/Psi+" id="ab4ba">  
  3. <vCard xmlns="vcard-temp">  
  4. <FN>guanfei</FN>  
  5. <NICKNAME>guanfei</NICKNAME>  
  6. </vCard>  
  7. </iq>  
  1. ####server返回disco列表  
  2. <iq from="xumatomacbook-pro.local" type="result" to="[email protected]/Psi+" id="ab4ca">  
  3. <query xmlns="http://jabber.org/protocol/disco#info">  
  4. <identity category="server" type="im" name="Tigase ver. 0.0.0-0"/>  
  5. <feature var="http://jabber.org/protocol/disco#info"/>  
  6. <feature var="http://jabber.org/protocol/disco#items"/>  
  7. <feature var="msgoffline"/>  
  8. <feature var="http://jabber.org/protocol/stats"/>  
  9. <feature var="http://jabber.org/protocol/commands"/>  
  10. <feature var="jabber:iq:version"/>  
  11. <feature var="jabber:iq:roster"/>  
  12. <feature var="jabber:iq:roster-dynamic"/>  
  13. <feature var="vcard-temp"/>  
  14. <feature var="urn:ietf:params:xml:ns:xmpp-sasl"/>  
  15. <feature var="urn:xmpp:ping"/>  
  16. <feature var="http://jabber.org/protocol/pubsub"/>  
  17. <feature var="http://jabber.org/protocol/pubsub#owner"/>  
  18. <feature var="http://jabber.org/protocol/pubsub#publish"/>  
  19. <identity category="pubsub" type="pep"/>  
  20. <feature var="urn:ietf:params:xml:ns:xmpp-session"/>  
  21. <feature var="http://jabber.org/protocol/amp"/>  
  22. <feature var="msgoffline"/>  
  23. <feature var="http://jabber.org/protocol/disco#info"/>  
  24. <feature var="http://jabber.org/protocol/disco#items"/>  
  25. <feature var="jabber:iq:privacy"/>  
  26. <feature var="urn:ietf:params:xml:ns:xmpp-bind"/>  
  27. <feature var="jabber:iq:private"/>  
  28. <feature var="jabber:iq:auth"/>  
  29. </query>  
  30. </iq>  
  1. <presence from="[email protected]/Psi+" to="[email protected]">  
  2. <priority>50</priority>  
  3. <c xmlns="http://jabber.org/protocol/caps" node="http://psi-dev.googlecode.com/caps" ver="0.16" ext="ca cs e-time ep-notify-2 html last-act mr sxe whiteboard"/>  
  4. </presence>  
  1. <iq type="result" id="ab4da" to="[email protected]/Psi+">  
  2. <query xmlns="jabber:iq:privacy">  
  3. <list name="blocked">  
  4. <item action="allow" order="100"/>  
  5. </list>  
  6. </query>  
  7. </iq>  
發佈了43 篇原創文章 · 獲贊 19 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章