SlideShare une entreprise Scribd logo
1  sur  266
XMPP 101

     Remko Tronçon
     Peter Saint-Andre




Tuesday, March 3, 2009
Overview
         Introduction
         XMPP Basics
         Example code
         Extensions
         State of the bulb
         Conclusion




                             2


Tuesday, March 3, 2009
Introduction


Tuesday, March 3, 2009
About Us




                         4


Tuesday, March 3, 2009
About Us
         Peter: Documentation guy and specification author




                                                            4


Tuesday, March 3, 2009
About Us
         Peter: Documentation guy and specification author
         Remko: Developer for Psi client and other projects




                                                              4


Tuesday, March 3, 2009
About Us
         Peter: Documentation guy and specification author
         Remko: Developer for Psi client and other projects
         Co-authors (with Kevin Smith) of XMPP: The
         Definitive Guide (O'Reilly, 2009)




                                                              4


Tuesday, March 3, 2009
About You




                         5


Tuesday, March 3, 2009
About You

         Why are you here?




                             5


Tuesday, March 3, 2009
About You

         Why are you here?
         What do you want to build?




                                      5


Tuesday, March 3, 2009
About You

         Why are you here?
         What do you want to build?
         What is your background? (web, client-server, ...)




                                                              5


Tuesday, March 3, 2009
What is XMPP?




                         6


Tuesday, March 3, 2009
What is XMPP?
          eXtensible Messaging and Presence Protocol




                                                       6


Tuesday, March 3, 2009
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber




                                                       6


Tuesday, March 3, 2009
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system




                                                       6


Tuesday, March 3, 2009
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
          Routes small snippets of XML




                                                       6


Tuesday, March 3, 2009
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
          Routes small snippets of XML




                 Alice                         Sister
           alice@wdland.lit             sister@rlworld.lit
                                                         6


Tuesday, March 3, 2009
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
          Routes small snippets of XML

                wdland.lit                 rlworld.lit
                         server              server




                 Alice                         Sister
           alice@wdland.lit             sister@rlworld.lit
                                                         6


Tuesday, March 3, 2009
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
          Routes small snippets of XML

                wdland.lit                 rlworld.lit
                         server              server




                 Alice                         Sister
           alice@wdland.lit             sister@rlworld.lit
                                                         6


Tuesday, March 3, 2009
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
          Routes small snippets of XML

                wdland.lit                 rlworld.lit
                         server              server

<message to=’sister@rlworld.lit’>
  <body>Hi there!</body>
</message>


                 Alice                         Sister
           alice@wdland.lit             sister@rlworld.lit
                                                         6


Tuesday, March 3, 2009
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
          Routes small snippets of XML

                wdland.lit                 rlworld.lit
                         server              server

<message to=’sister@rlworld.lit’>
  <body>Hi there!</body>
</message>


                 Alice                         Sister
           alice@wdland.lit             sister@rlworld.lit
                                                         6


Tuesday, March 3, 2009
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
          Routes small snippets of XML

                wdland.lit                  rlworld.lit
                                    ...
                         server                server

<message to=’sister@rlworld.lit’>
  <body>Hi there!</body>
</message>


                 Alice                           Sister
           alice@wdland.lit               sister@rlworld.lit
                                                           6


Tuesday, March 3, 2009
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
          Routes small snippets of XML

                wdland.lit                      rlworld.lit
                                    ...
                         server                     server

<message to=’sister@rlworld.lit’>     <message from=’alice@wland.lit’>
  <body>Hi there!</body>                <body>Hi there!</body>
</message>                            </message>


                 Alice                              Sister
           alice@wdland.lit                  sister@rlworld.lit
                                                              6


Tuesday, March 3, 2009
What can you do with XMPP?




                                  7


Tuesday, March 3, 2009
What can you do with XMPP?
                         Instant Messaging




                                             7


Tuesday, March 3, 2009
What can you do with XMPP?
                     Real-time Social Networking




                                                   8


Tuesday, March 3, 2009
What can you do with XMPP?
                         Gaming




                                  9


Tuesday, March 3, 2009
What can you do with XMPP?
                         Voice & Video




                                         10


Tuesday, March 3, 2009
What can you do with XMPP?
                         Mobile apps / Geolocation




                                                     11


Tuesday, March 3, 2009
What can you do with XMPP?



                   <insert your idea here>




                                             12


Tuesday, March 3, 2009
XMPP ...




                         13


Tuesday, March 3, 2009
XMPP ...
         ... is an open standard (RFC 3920 + 3921, XSF
         Extensions)




                                                         13


Tuesday, March 3, 2009
XMPP ...
         ... is an open standard (RFC 3920 + 3921, XSF
         Extensions)
         ... is decentralized (federated)




                                                         13


Tuesday, March 3, 2009
XMPP ...
         ... is an open standard (RFC 3920 + 3921, XSF
         Extensions)
         ... is decentralized (federated)
         ... has strong security (TLS)




                                                         13


Tuesday, March 3, 2009
XMPP ...
         ... is an open standard (RFC 3920 + 3921, XSF
         Extensions)
         ... is decentralized (federated)
         ... has strong security (TLS)
         ... has lots of open-source projects (but other
         licensing allowed)




                                                           13


Tuesday, March 3, 2009
XMPP ...
         ... is an open standard (RFC 3920 + 3921, XSF
         Extensions)
         ... is decentralized (federated)
         ... has strong security (TLS)
         ... has lots of open-source projects (but other
         licensing allowed)
         ... has an active, open community




                                                           13


Tuesday, March 3, 2009
What does XMPP provide?




                               14


Tuesday, March 3, 2009
What does XMPP provide?
         Channel encryption and authentication




                                                 14


Tuesday, March 3, 2009
What does XMPP provide?
         Channel encryption and authentication
         Presence and contact lists




                                                 14


Tuesday, March 3, 2009
What does XMPP provide?
         Channel encryption and authentication
         Presence and contact lists
         One-to-one and multi-party messaging




                                                 14


Tuesday, March 3, 2009
What does XMPP provide?
         Channel encryption and authentication
         Presence and contact lists
         One-to-one and multi-party messaging
         Alerts and notifications (PubSub)




                                                 14


Tuesday, March 3, 2009
What does XMPP provide?
         Channel encryption and authentication
         Presence and contact lists
         One-to-one and multi-party messaging
         Alerts and notifications (PubSub)
         Service discovery and device capabilities




                                                     14


Tuesday, March 3, 2009
What does XMPP provide?
         Channel encryption and authentication
         Presence and contact lists
         One-to-one and multi-party messaging
         Alerts and notifications (PubSub)
         Service discovery and device capabilities
         Peer-to-peer media sessions (Jingle)




                                                     14


Tuesday, March 3, 2009
What does XMPP provide?
         Channel encryption and authentication
         Presence and contact lists
         One-to-one and multi-party messaging
         Alerts and notifications (PubSub)
         Service discovery and device capabilities
         Peer-to-peer media sessions (Jingle)
         Data forms and remote commands



                                                     14


Tuesday, March 3, 2009
What does XMPP provide?
         Channel encryption and authentication
         Presence and contact lists
         One-to-one and multi-party messaging
         Alerts and notifications (PubSub)
         Service discovery and device capabilities
         Peer-to-peer media sessions (Jingle)
         Data forms and remote commands
         And more (lots of extensions)


                                                     14


Tuesday, March 3, 2009
History




                         15


Tuesday, March 3, 2009
History
         Invented by Jeremie Miller as Jabber (1998)




                                                       15


Tuesday, March 3, 2009
History
         Invented by Jeremie Miller as Jabber (1998)
         First server + clients + libraries (1999-2000)




                                                          15


Tuesday, March 3, 2009
History
         Invented by Jeremie Miller as Jabber (1998)
         First server + clients + libraries (1999-2000)
         More open source + commercial codebases
         (2000+)




                                                          15


Tuesday, March 3, 2009
History
         Invented by Jeremie Miller as Jabber (1998)
         First server + clients + libraries (1999-2000)
         More open source + commercial codebases
         (2000+)
         Core standardization in IETF as XMPP (2002-2004)




                                                            15


Tuesday, March 3, 2009
History
         Invented by Jeremie Miller as Jabber (1998)
         First server + clients + libraries (1999-2000)
         More open source + commercial codebases
         (2000+)
         Core standardization in IETF as XMPP (2002-2004)
         Development of extensions (2002+)




                                                            15


Tuesday, March 3, 2009
History
         Invented by Jeremie Miller as Jabber (1998)
         First server + clients + libraries (1999-2000)
         More open source + commercial codebases
         (2000+)
         Core standardization in IETF as XMPP (2002-2004)
         Development of extensions (2002+)
         Serious adoption by Apple, Google, LiveJournal,
         Nokia, Cisco, etc. (2005+)



                                                            15


Tuesday, March 3, 2009
History
         Invented by Jeremie Miller as Jabber (1998)
         First server + clients + libraries (1999-2000)
         More open source + commercial codebases
         (2000+)
         Core standardization in IETF as XMPP (2002-2004)
         Development of extensions (2002+)
         Serious adoption by Apple, Google, LiveJournal,
         Nokia, Cisco, etc. (2005+)
         Continuing work on improved security and more
         application types
                                                            15


Tuesday, March 3, 2009
Basics


Tuesday, March 3, 2009
Architecture
         Web architecture




                            17


Tuesday, March 3, 2009
Architecture
         Web architecture




                            Browser



                                      17


Tuesday, March 3, 2009
Architecture
         Web architecture


                         wonderland.lit             images.realworld.lit
                          Web Server                   Web Server




                                          Browser



                                                                           17


Tuesday, March 3, 2009
Architecture
         Web architecture


                         wonderland.lit             images.realworld.lit
                          Web Server                   Web Server




                                          Browser



                                                                           17


Tuesday, March 3, 2009
Architecture
         Web architecture


                         wonderland.lit             images.realworld.lit
                          Web Server                   Web Server




                                          Browser



                                                                           17


Tuesday, March 3, 2009
Architecture
         Web architecture


                         wonderland.lit             images.realworld.lit
                          Web Server                   Web Server




                                          Browser



                                                                           17


Tuesday, March 3, 2009
Architecture
         Web architecture


                         wonderland.lit             images.realworld.lit
                          Web Server                   Web Server




                                          Browser



                                                                           17


Tuesday, March 3, 2009
Architecture
         E-Mail architecture




                               18


Tuesday, March 3, 2009
Architecture
         E-Mail architecture




         E-Mail client             E-Mail client
    alice@wonderland.lit       sister@realworld.lit

                                                      18


Tuesday, March 3, 2009
Architecture
         E-Mail architecture

         wonderland.lit        rabbithole.lit      realworld.lit
            server                server              server




         E-Mail client                              E-Mail client
    alice@wonderland.lit                        sister@realworld.lit

                                                                       18


Tuesday, March 3, 2009
Architecture
         E-Mail architecture

         wonderland.lit        rabbithole.lit      realworld.lit
            server                server              server




         E-Mail client                              E-Mail client
    alice@wonderland.lit                        sister@realworld.lit

                                                                       18


Tuesday, March 3, 2009
Architecture
         E-Mail architecture

         wonderland.lit        rabbithole.lit      realworld.lit
            server                server              server




         E-Mail client                              E-Mail client
    alice@wonderland.lit                        sister@realworld.lit

                                                                       18


Tuesday, March 3, 2009
Architecture
         E-Mail architecture

         wonderland.lit        rabbithole.lit      realworld.lit
            server                server              server




         E-Mail client                              E-Mail client
    alice@wonderland.lit                        sister@realworld.lit

                                                                       18


Tuesday, March 3, 2009
Architecture
         E-Mail architecture

         wonderland.lit        rabbithole.lit      realworld.lit
            server                server              server




         E-Mail client                              E-Mail client
    alice@wonderland.lit                        sister@realworld.lit

                                                                       18


Tuesday, March 3, 2009
Architecture
         XMPP Architecture

                                             realworld.lit
                         wonderland.lit
                                                server
                            server




                                              XMPP client
                       XMPP client
                                          sister@realworld.lit
                  alice@wonderland.lit

                                                                 19


Tuesday, March 3, 2009
Architecture
         XMPP Architecture

                                             realworld.lit
                         wonderland.lit
                                                server
                            server




                                              XMPP client
                       XMPP client
                                          sister@realworld.lit
                  alice@wonderland.lit

                                                                 19


Tuesday, March 3, 2009
Architecture
         XMPP Architecture

                                             realworld.lit
                         wonderland.lit
                                                server
                            server




                                              XMPP client
                       XMPP client
                                          sister@realworld.lit
                  alice@wonderland.lit

                                                                 19


Tuesday, March 3, 2009
Architecture
         XMPP Architecture

                                             realworld.lit
                         wonderland.lit
                                                server
                            server




                                              XMPP client
                       XMPP client
                                          sister@realworld.lit
                  alice@wonderland.lit

                                                                 19


Tuesday, March 3, 2009
Architecture




                         20


Tuesday, March 3, 2009
Architecture
         Client-server




                         20


Tuesday, March 3, 2009
Architecture
         Client-server
             Client developers can focus on user experience




                                                              20


Tuesday, March 3, 2009
Architecture
         Client-server
             Client developers can focus on user experience
             Server developers can focus on relaibility & scalability




                                                                        20


Tuesday, March 3, 2009
Architecture
         Client-server
             Client developers can focus on user experience
             Server developers can focus on relaibility & scalability
         Decentralized




                                                                        20


Tuesday, March 3, 2009
Architecture
         Client-server
             Client developers can focus on user experience
             Server developers can focus on relaibility & scalability
         Decentralized
             Robust (no single point of failure)




                                                                        20


Tuesday, March 3, 2009
Architecture
         Client-server
             Client developers can focus on user experience
             Server developers can focus on relaibility & scalability
         Decentralized
             Robust (no single point of failure)
             Easier to manage




                                                                        20


Tuesday, March 3, 2009
Architecture
         Client-server
             Client developers can focus on user experience
             Server developers can focus on relaibility & scalability
         Decentralized
             Robust (no single point of failure)
             Easier to manage
         No multiple hops




                                                                        20


Tuesday, March 3, 2009
Architecture
         Client-server
             Client developers can focus on user experience
             Server developers can focus on relaibility & scalability
         Decentralized
             Robust (no single point of failure)
             Easier to manage
         No multiple hops
             Harder to spoof




                                                                        20


Tuesday, March 3, 2009
Addresses

                         Jabber ID (JID)




                                           21


Tuesday, March 3, 2009
Addresses

                         Jabber ID (JID)
                             Domain
                          wonderland.lit




                                           21


Tuesday, March 3, 2009
Addresses

                         Jabber ID (JID)
               User          Domain
             alice@ wonderland.lit




                                           21


Tuesday, March 3, 2009
Addresses

                         Jabber ID (JID)
               User           Domain
             alice@ wonderland.lit

                           Bare JID


                                           21


Tuesday, March 3, 2009
Addresses

                         Jabber ID (JID)
               User          Domain
             alice@ wonderland.lit




                                           21


Tuesday, March 3, 2009
Addresses

                         Jabber ID (JID)
               User          Domain   Resource
             alice@ wonderland.lit /TeaParty




                                                 21


Tuesday, March 3, 2009
Addresses

                         Jabber ID (JID)
               User          Domain       Resource
             alice@ wonderland.lit /TeaParty

                               Full JID


                                                     21


Tuesday, March 3, 2009
Streaming XML




                         22


Tuesday, March 3, 2009
Streaming XML
 <stream:stream>




                         22


Tuesday, March 3, 2009
Streaming XML
 <stream:stream>
       <presence/>




                         22


Tuesday, March 3, 2009
Streaming XML
 <stream:stream>
       <presence/>
       <iq type=quot;getquot;>
         <query xmlns=quot;jabber:iq:rosterquot;/>
       </iq>




                                             22


Tuesday, March 3, 2009
Streaming XML
 <stream:stream>
       <presence/>
       <iq type=quot;getquot;>
         <query xmlns=quot;jabber:iq:rosterquot;/>
       </iq>
       <iq type=quot;resultquot;>
         <query xmlns=quot;jabber:iq:rosterquot;>
           <item jid=quot;alice@wonderland.litquot;/>
           <item jid=quot;madhatter@wonderland.litquot;/>
           <item jid=quot;whiterabbit@wonderland.litquot;/>
         </query>
       </iq>




                                                      22


Tuesday, March 3, 2009
Streaming XML
 <stream:stream>
       <presence/>
       <iq type=quot;getquot;>
         <query xmlns=quot;jabber:iq:rosterquot;/>
       </iq>
       <iq type=quot;resultquot;>
         <query xmlns=quot;jabber:iq:rosterquot;>
           <item jid=quot;alice@wonderland.litquot;/>
           <item jid=quot;madhatter@wonderland.litquot;/>
           <item jid=quot;whiterabbit@wonderland.litquot;/>
         </query>
       </iq>
       <message from=quot;queen@wonderland.litquot; to=quot;madhatter@wonderland.litquot;>
         <body>Off with his head!</body>
       </message>




                                                                             22


Tuesday, March 3, 2009
Streaming XML
 <stream:stream>
       <presence/>
       <iq type=quot;getquot;>
         <query xmlns=quot;jabber:iq:rosterquot;/>
       </iq>
       <iq type=quot;resultquot;>
         <query xmlns=quot;jabber:iq:rosterquot;>
           <item jid=quot;alice@wonderland.litquot;/>
           <item jid=quot;madhatter@wonderland.litquot;/>
           <item jid=quot;whiterabbit@wonderland.litquot;/>
         </query>
       </iq>
       <message from=quot;queen@wonderland.litquot; to=quot;madhatter@wonderland.litquot;>
         <body>Off with his head!</body>
       </message>
       <message from=quot;king@wonderland.litquot; to=quot;party@rooms.wonderland.litquot;>
         <body>You are all pardoned.</body>
       </message>


                                                                              22


Tuesday, March 3, 2009
Streaming XML
 <stream:stream>
       <presence/>
       <iq type=quot;getquot;>
         <query xmlns=quot;jabber:iq:rosterquot;/>
       </iq>
       <iq type=quot;resultquot;>
         <query xmlns=quot;jabber:iq:rosterquot;>
           <item jid=quot;alice@wonderland.litquot;/>
           <item jid=quot;madhatter@wonderland.litquot;/>
           <item jid=quot;whiterabbit@wonderland.litquot;/>
         </query>
       </iq>
       <message from=quot;queen@wonderland.litquot; to=quot;madhatter@wonderland.litquot;>
         <body>Off with his head!</body>
       </message>
       <message from=quot;king@wonderland.litquot; to=quot;party@rooms.wonderland.litquot;>
         <body>You are all pardoned.</body>
       </message>
       <presence type=quot;unavailablequot;/>
                                                                              22


Tuesday, March 3, 2009
Streaming XML
 <stream:stream>
       <presence/>
       <iq type=quot;getquot;>
         <query xmlns=quot;jabber:iq:rosterquot;/>
       </iq>
       <iq type=quot;resultquot;>
         <query xmlns=quot;jabber:iq:rosterquot;>
           <item jid=quot;alice@wonderland.litquot;/>
           <item jid=quot;madhatter@wonderland.litquot;/>
           <item jid=quot;whiterabbit@wonderland.litquot;/>
         </query>
       </iq>
       <message from=quot;queen@wonderland.litquot; to=quot;madhatter@wonderland.litquot;>
         <body>Off with his head!</body>
       </message>
    <message from=quot;king@wonderland.litquot; to=quot;party@rooms.wonderland.litquot;>
      <body>You are all pardoned.</body>
    </message>
    <presence type=quot;unavailablequot;/>
 </stream:stream>                                                            22


Tuesday, March 3, 2009
Communication Primitives

                         Stanzas:




                                    23


Tuesday, March 3, 2009
Communication Primitives

                         Stanzas:
                         <message/>




                                      23


Tuesday, March 3, 2009
Communication Primitives

                          Stanzas:
                         <message/>

                         <presence/>




                                       23


Tuesday, March 3, 2009
Communication Primitives

                          Stanzas:
                         <message/>

                         <presence/>

                            <iq/>


                                       23


Tuesday, March 3, 2009
Message Stanzas




                         24


Tuesday, March 3, 2009
Message Stanzas
          <message from=quot;madhatter@wonderland.lit/fooquot;
                   to=quot;alice@wonderland.litquot;
                   type=quot;chatquot;>
            <body>Who are you?</body>
            <subject>Query</subject>
          </message>




                                                         24


Tuesday, March 3, 2009
Message Stanzas
          <message from=quot;madhatter@wonderland.lit/fooquot;
                   to=quot;alice@wonderland.litquot;
                   type=quot;chatquot;>
            <body>Who are you?</body>
            <subject>Query</subject>
          </message>

         From, To




                                                         24


Tuesday, March 3, 2009
Message Stanzas
          <message from=quot;madhatter@wonderland.lit/fooquot;
                   to=quot;alice@wonderland.litquot;
                   type=quot;chatquot;>
            <body>Who are you?</body>
            <subject>Query</subject>
          </message>

         From, To
         Types: normal, chat, groupchat, headline, error




                                                           24


Tuesday, March 3, 2009
Message Stanzas
          <message from=quot;madhatter@wonderland.lit/fooquot;
                   to=quot;alice@wonderland.litquot;
                   type=quot;chatquot;>
            <body>Who are you?</body>
            <subject>Query</subject>
          </message>

         From, To
         Types: normal, chat, groupchat, headline, error
         Payloads: Body, Subject


                                                           24


Tuesday, March 3, 2009
Presence Stanzas




                         25


Tuesday, March 3, 2009
Presence Stanzas
         <presence from=quot;alice@wonderland.lit/pdaquot;>
           <show>xa</show>
           <status>down the rabbit hole!</status>
         </presence>




                                                      25


Tuesday, March 3, 2009
Presence Stanzas
         <presence from=quot;alice@wonderland.lit/pdaquot;>
           <show>xa</show>
           <status>down the rabbit hole!</status>
         </presence>

      Advertise network availability (online/offline)




                                                       25


Tuesday, March 3, 2009
Presence Stanzas
         <presence from=quot;alice@wonderland.lit/pdaquot;>
           <show>xa</show>
           <status>down the rabbit hole!</status>
         </presence>

      Advertise network availability (online/offline)
      ‘Show’ Statuses: Away, Do Not Disturb,
      Extended Away, Free for chat




                                                       25


Tuesday, March 3, 2009
Presence Stanzas
         <presence from=quot;alice@wonderland.lit/pdaquot;>
           <show>xa</show>
           <status>down the rabbit hole!</status>
         </presence>

      Advertise network availability (online/offline)
      ‘Show’ Statuses: Away, Do Not Disturb,
      Extended Away, Free for chat
      Status messages




                                                       25


Tuesday, March 3, 2009
Presence Stanzas
         <presence from=quot;alice@wonderland.lit/pdaquot;>
           <show>xa</show>
           <status>down the rabbit hole!</status>
         </presence>

      Advertise network availability (online/offline)
      ‘Show’ Statuses: Away, Do Not Disturb,
      Extended Away, Free for chat
      Status messages
      Typically used for contact lists/rosters


                                                       25


Tuesday, March 3, 2009
Presence Stanzas
         <presence from=quot;alice@wonderland.lit/pdaquot;>
           <show>xa</show>
           <status>down the rabbit hole!</status>
         </presence>

      Advertise network availability (online/offline)
      ‘Show’ Statuses: Away, Do Not Disturb,
      Extended Away, Free for chat
      Status messages
      Typically used for contact lists/rosters


                                                       25


Tuesday, March 3, 2009
Presence Stanzas
         <presence from=quot;alice@wonderland.lit/pdaquot;>
           <show>xa</show>
           <status>down the rabbit hole!</status>
         </presence>

      Advertise network availability (online/offline)
      ‘Show’ Statuses: Away, Do Not Disturb,
      Extended Away, Free for chat
      Status messages
      Typically used for contact lists/rosters
      Presence subscriptions

                                                       25


Tuesday, March 3, 2009
IQ Stanzas




                         26


Tuesday, March 3, 2009
IQ Stanzas
              <iq type=quot;getquot;>
                <query xmlns=quot;jabber:iq:rosterquot;/>
              </iq>




                                                    26


Tuesday, March 3, 2009
IQ Stanzas
              <iq type=quot;getquot;>
                <query xmlns=quot;jabber:iq:rosterquot;/>
              </iq>
              <iq type=quot;resultquot;>
                <query xmlns=quot;jabber:iq:rosterquot;>
                  <item jid=quot;alice@wonderland.litquot;/>
                  <item jid=quot;madhatter@wonderland.litquot;/>
                  <item jid=quot;whiterabbit@wonderland.litquot;/>
                </query>
              </iq>




                                                             26


Tuesday, March 3, 2009
IQ Stanzas
              <iq type=quot;getquot;>
                <query xmlns=quot;jabber:iq:rosterquot;/>
              </iq>
              <iq type=quot;resultquot;>
                <query xmlns=quot;jabber:iq:rosterquot;>
                  <item jid=quot;alice@wonderland.litquot;/>
                  <item jid=quot;madhatter@wonderland.litquot;/>
                  <item jid=quot;whiterabbit@wonderland.litquot;/>
                </query>
              </iq>
         Request/Response


                                                             26


Tuesday, March 3, 2009
IQ Stanzas
              <iq type=quot;getquot;>
                <query xmlns=quot;jabber:iq:rosterquot;/>
              </iq>
              <iq type=quot;resultquot;>
                <query xmlns=quot;jabber:iq:rosterquot;>
                  <item jid=quot;alice@wonderland.litquot;/>
                  <item jid=quot;madhatter@wonderland.litquot;/>
                  <item jid=quot;whiterabbit@wonderland.litquot;/>
                </query>
              </iq>
         Request/Response
         Workflows, execute commands, query information
                                                             26


Tuesday, March 3, 2009
IQ Stanzas
              <iq type=quot;getquot;>
                <query xmlns=quot;jabber:iq:rosterquot;/>
              </iq>
              <iq type=quot;resultquot;>
                <query xmlns=quot;jabber:iq:rosterquot;>
                  <item jid=quot;alice@wonderland.litquot;/>
                  <item jid=quot;madhatter@wonderland.litquot;/>
                  <item jid=quot;whiterabbit@wonderland.litquot;/>
                </query>
              </iq>
         Request/Response
         Workflows, execute commands, query information
         Similar to HTTP GET, POST, PUT                      26


Tuesday, March 3, 2009
IQ Stanzas



                         Sender   Receiver




                                             27


Tuesday, March 3, 2009
IQ Stanzas



                                  IQ-get
                         Sender            Receiver




                                                      27


Tuesday, March 3, 2009
IQ Stanzas



                         Sender               Receiver
                                  IQ-result




                                                         27


Tuesday, March 3, 2009
IQ Stanzas



                         Sender   Receiver




                                             27


Tuesday, March 3, 2009
IQ Stanzas



                                  IQ-set
                         Sender            Receiver




                                                      27


Tuesday, March 3, 2009
IQ Stanzas



                         Sender               Receiver
                                  IQ-result




                                                         27


Tuesday, March 3, 2009
IQ Stanzas



                         Sender   Receiver




                                             27


Tuesday, March 3, 2009
IQ Stanzas




                         28


Tuesday, March 3, 2009
IQ Stanzas
              <iq type=quot;getquot;>
                <query xmlns=quot;jabber:iq:rosterquot;/>
              </iq>




                                                    28


Tuesday, March 3, 2009
IQ Stanzas
              <iq type=quot;getquot;>
                <query xmlns=quot;jabber:iq:rosterquot;/>
              </iq>

         Types:




                                                    28


Tuesday, March 3, 2009
IQ Stanzas
              <iq type=quot;getquot;>
                <query xmlns=quot;jabber:iq:rosterquot;/>
              </iq>

         Types:
             get: Ask for information (HTTP GET)




                                                    28


Tuesday, March 3, 2009
IQ Stanzas
              <iq type=quot;getquot;>
                <query xmlns=quot;jabber:iq:rosterquot;/>
              </iq>

         Types:
             get: Ask for information (HTTP GET)
             set: Provide information (HTTP POST/PUT)




                                                        28


Tuesday, March 3, 2009
IQ Stanzas
              <iq type=quot;getquot;>
                <query xmlns=quot;jabber:iq:rosterquot;/>
              </iq>

         Types:
             get: Ask for information (HTTP GET)
             set: Provide information (HTTP POST/PUT)
             result: Returns requested information / acknowledge set




                                                                       28


Tuesday, March 3, 2009
IQ Stanzas
              <iq type=quot;getquot;>
                <query xmlns=quot;jabber:iq:rosterquot;/>
              </iq>

         Types:
             get: Ask for information (HTTP GET)
             set: Provide information (HTTP POST/PUT)
             result: Returns requested information / acknowledge set
             error




                                                                       28


Tuesday, March 3, 2009
Extensibility




                         29


Tuesday, March 3, 2009
Extensibility
         Any XML child element can be used as a payload




                                                          29


Tuesday, March 3, 2009
Extensibility
         Any XML child element can be used as a payload
             e.g. XHTML bodies, Atom feeds, XML-RPC, ...




                                                           29


Tuesday, March 3, 2009
Extensibility
         Any XML child element can be used as a payload
             e.g. XHTML bodies, Atom feeds, XML-RPC, ...
         Namespaces to scope payloads
                         <iq type=quot;getquot;>
                           <query xmlns=quot;jabber:iq:rosterquot;/>
                         </iq>




                                                               29


Tuesday, March 3, 2009
Extensibility
         Any XML child element can be used as a payload
             e.g. XHTML bodies, Atom feeds, XML-RPC, ...
         Namespaces to scope payloads
                         <iq type=quot;getquot;>
                           <query xmlns=quot;jabber:iq:rosterquot;/>
                         </iq>
         Extensions typically developed @ XMPP Standards
         Foundation's




                                                               29


Tuesday, March 3, 2009
Extensibility
         Any XML child element can be used as a payload
             e.g. XHTML bodies, Atom feeds, XML-RPC, ...
         Namespaces to scope payloads
                         <iq type=quot;getquot;>
                           <query xmlns=quot;jabber:iq:rosterquot;/>
                         </iq>
         Extensions typically developed @ XMPP Standards
         Foundation's
         Open, developer-friendly standards process


                                                               29


Tuesday, March 3, 2009
Extensibility
         Any XML child element can be used as a payload
             e.g. XHTML bodies, Atom feeds, XML-RPC, ...
         Namespaces to scope payloads
                         <iq type=quot;getquot;>
                           <query xmlns=quot;jabber:iq:rosterquot;/>
                         </iq>
         Extensions typically developed @ XMPP Standards
         Foundation's
         Open, developer-friendly standards process
         Can write your own quot;privatequot; extensions for custom
         functionality
                                                               29


Tuesday, March 3, 2009
Asynchronicity




                         30


Tuesday, March 3, 2009
Asynchronicity
         Web




                         30


Tuesday, March 3, 2009
Asynchronicity
         Web
             Send request to server




                                      30


Tuesday, March 3, 2009
Asynchronicity
         Web
             Send request to server
             Wait for response




                                      30


Tuesday, March 3, 2009
Asynchronicity
         Web
             Send request to server
             Wait for response
             Short-lived connections




                                       30


Tuesday, March 3, 2009
Asynchronicity
         Web
             Send request to server
             Wait for response
             Short-lived connections
         Jabber




                                       30


Tuesday, March 3, 2009
Asynchronicity
         Web
             Send request to server
             Wait for response
             Short-lived connections
         Jabber
             Long lived connection




                                       30


Tuesday, March 3, 2009
Asynchronicity
         Web
             Send request to server
             Wait for response
             Short-lived connections
         Jabber
             Long lived connection
             Events are sent out / come in asynchronously




                                                            30


Tuesday, March 3, 2009
Asynchronicity
         Web
             Send request to server
             Wait for response
             Short-lived connections
         Jabber
             Long lived connection
             Events are sent out / come in asynchronously
         Different mindsets!



                                                            30


Tuesday, March 3, 2009
Code Example


Tuesday, March 3, 2009
Echo bot




                         32


Tuesday, March 3, 2009
Echo bot
         Bots




                         32


Tuesday, March 3, 2009
Echo bot
         Bots
             Unmanned clients




                                32


Tuesday, March 3, 2009
Echo bot
         Bots
             Unmanned clients
             Connect to an XMPP server, and wait for commands / send
             events




                                                                       32


Tuesday, March 3, 2009
Echo bot
         Bots
             Unmanned clients
             Connect to an XMPP server, and wait for commands / send
             events
         Echo bot




                                                                       32


Tuesday, March 3, 2009
Echo bot
         Bots
             Unmanned clients
             Connect to an XMPP server, and wait for commands / send
             events
         Echo bot
             Echoes back every message that it receives




                                                                       32


Tuesday, March 3, 2009
Tuesday, March 3, 2009
Writing the Echo Bot




                            34


Tuesday, March 3, 2009
Writing the Echo Bot
         Select a language to work in




                                        34


Tuesday, March 3, 2009
Writing the Echo Bot
         Select a language to work in
             e.g. Python




                                        34


Tuesday, March 3, 2009
Writing the Echo Bot
         Select a language to work in
             e.g. Python
         Select an XMPP library to do the low-level XMPP
         work




                                                           34


Tuesday, March 3, 2009
Writing the Echo Bot
         Select a language to work in
             e.g. Python
         Select an XMPP library to do the low-level XMPP
         work
             e.g. SleekXMPP




                                                           34


Tuesday, March 3, 2009
Writing the Echo Bot
         Select a language to work in
             e.g. Python
         Select an XMPP library to do the low-level XMPP
         work
             e.g. SleekXMPP
         Start coding




                                                           34


Tuesday, March 3, 2009
SleekXMPP Python Echo Bot
    class EchoBot :
      def __init__(self, jid, password) :
        self.xmpp = sleekxmpp.ClientXMPP(jid, password)
        self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected)
        self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage)

       def run(self) :
         self.xmpp.connect()
         self.xmpp.process(threaded=False)

       def handleXMPPConnected(self, event):
         self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;)

       def handleIncomingMessage(self, message) :
         self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;])

    def main() :
      bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;)
      bot.run()


                                                                           35


Tuesday, March 3, 2009
SleekXMPP Python Echo Bot
    class EchoBot :
      def __init__(self, jid, password) :
        self.xmpp = sleekxmpp.ClientXMPP(jid, password)
        self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected)
        self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage)

       def run(self) :
         self.xmpp.connect()
         self.xmpp.process(threaded=False)

       def handleXMPPConnected(self, event):
         self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;)

       def handleIncomingMessage(self, message) :
         self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;])

    def main() :
      bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;)
      bot.run()


                                                                           35


Tuesday, March 3, 2009
SleekXMPP Python Echo Bot
    class EchoBot :
      def __init__(self, jid, password) :
        self.xmpp = sleekxmpp.ClientXMPP(jid, password)
        self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected)
        self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage)

       def run(self) :
         self.xmpp.connect()
         self.xmpp.process(threaded=False)

       def handleXMPPConnected(self, event):
         self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;)

       def handleIncomingMessage(self, message) :
         self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;])

    def main() :
      bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;)
      bot.run()


                                                                           35


Tuesday, March 3, 2009
SleekXMPP Python Echo Bot
    class EchoBot :
      def __init__(self, jid, password) :
        self.xmpp = sleekxmpp.ClientXMPP(jid, password)
        self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected)
        self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage)

       def run(self) :
         self.xmpp.connect()
         self.xmpp.process(threaded=False)

       def handleXMPPConnected(self, event):
         self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;)

       def handleIncomingMessage(self, message) :
         self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;])

    def main() :
      bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;)
      bot.run()


                                                                           35


Tuesday, March 3, 2009
SleekXMPP Python Echo Bot
    class EchoBot :
      def __init__(self, jid, password) :
        self.xmpp = sleekxmpp.ClientXMPP(jid, password)
        self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected)
        self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage)

       def run(self) :
         self.xmpp.connect()
         self.xmpp.process(threaded=False)

       def handleXMPPConnected(self, event):
         self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;)

       def handleIncomingMessage(self, message) :
         self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;])

    def main() :
      bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;)
      bot.run()


                                                                           35


Tuesday, March 3, 2009
SleekXMPP Python Echo Bot
    class EchoBot :
      def __init__(self, jid, password) :
        self.xmpp = sleekxmpp.ClientXMPP(jid, password)
        self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected)
        self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage)

       def run(self) :
         self.xmpp.connect()
         self.xmpp.process(threaded=False)

       def handleXMPPConnected(self, event):
         self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;)

       def handleIncomingMessage(self, message) :
         self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;])

    def main() :
      bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;)
      bot.run()


                                                                           35


Tuesday, March 3, 2009
SleekXMPP Python Echo Bot
    class EchoBot :
      def __init__(self, jid, password) :
        self.xmpp = sleekxmpp.ClientXMPP(jid, password)
        self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected)
        self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage)

       def run(self) :
         self.xmpp.connect()
         self.xmpp.process(threaded=False)

       def handleXMPPConnected(self, event):
         self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;)

       def handleIncomingMessage(self, message) :
         self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;])

    def main() :
      bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;)
      bot.run()


                                                                           35


Tuesday, March 3, 2009
Extensions


Tuesday, March 3, 2009
Multi-User Chat




                         37


Tuesday, March 3, 2009
Multi-User Chat




                         38


Tuesday, March 3, 2009
Multi-User Chat
         Conversation with multiple users




                                            38


Tuesday, March 3, 2009
Multi-User Chat
         Conversation with multiple users
         Shared roster (with presence from all participating
         users)




                                                               38


Tuesday, March 3, 2009
Multi-User Chat
         Conversation with multiple users
         Shared roster (with presence from all participating
         users)
         Crowd control




                                                               38


Tuesday, March 3, 2009
Multi-User Chat
         Conversation with multiple users
         Shared roster (with presence from all participating
         users)
         Crowd control
         Privacy




                                                               38


Tuesday, March 3, 2009
Multi-User Chat
         Conversation with multiple users
         Shared roster (with presence from all participating
         users)
         Crowd control
         Privacy
         Configurable




                                                               38


Tuesday, March 3, 2009
Multi-User Chat Configuration




                                    39


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                     PubSub

    HTTP client                    XMPP client
                         Service




                                                 40


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                            PubSub
                         Poll
    HTTP client                           XMPP client
                                Service




                                                        40


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                              PubSub

    HTTP client                             XMPP client
                                  Service
                         Result




                                                          40


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                     PubSub

    HTTP client                    XMPP client
                         Service




                                                 40


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                            PubSub
                         Poll
    HTTP client                           XMPP client
                                Service




                                                        40


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                                 PubSub

    HTTP client                                XMPP client
                                     Service
                         No Result




                                                             40


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                     PubSub

    HTTP client                    XMPP client
                         Service




                                                 40


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                            PubSub
                         Poll
    HTTP client                           XMPP client
                                Service




                                                        40


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                              PubSub

    HTTP client                             XMPP client
                                  Service
                         Result




                                                          40


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                     PubSub

    HTTP client                    XMPP client
                         Service




                                                 40


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                                 PubSub
                                   Subscribe
    HTTP client                                XMPP client
                         Service




                                                             40


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                     PubSub

    HTTP client                    XMPP client
                         Service




                                                 40


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                               PubSub

    HTTP client                              XMPP client
                         Service
                                   Publish




                                                           40


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                     PubSub

    HTTP client                    XMPP client
                         Service




                                                 40


Tuesday, March 3, 2009
PubSub




                         41


Tuesday, March 3, 2009
PubSub
         Protocol to subscribe and publish any kind of
         information




                                                         41


Tuesday, March 3, 2009
PubSub
         Protocol to subscribe and publish any kind of
         information
         Avoids needless polling for new information




                                                         41


Tuesday, March 3, 2009
PubSub
         Protocol to subscribe and publish any kind of
         information
         Avoids needless polling for new information
             Doesn’t scale with the number of users / requests




                                                                 41


Tuesday, March 3, 2009
PubSub
         Protocol to subscribe and publish any kind of
         information
         Avoids needless polling for new information
             Doesn’t scale with the number of users / requests
         Extensible: Payload can be any type




                                                                 41


Tuesday, March 3, 2009
PubSub
         Protocol to subscribe and publish any kind of
         information
         Avoids needless polling for new information
             Doesn’t scale with the number of users / requests
         Extensible: Payload can be any type
         Configurable




                                                                 41


Tuesday, March 3, 2009
PubSub: Subscribing

   <iq from=quot;alice@wonderland.lit/rabbitholequot;
       id=quot;gh921nx3quot;
       to=quot;notify.wonderland.litquot;
       type=quot;setquot;>
     <pubsub xmlns=quot;http://jabber.org/protocol/pubsubquot;>
       <subscribe node=quot;queenly_proclamationsquot;
                   jid=quot;alice@wonderland.litquot;/>
     </pubsub>
   </iq>




                                                     42


Tuesday, March 3, 2009
PubSub: Publishing events
     <iq from=quot;queen@wonderland.lit/croquetlawnquot;
         id=quot;ma019r58quot;
         to=quot;notify.wonderland.litquot;
         type=quot;setquot;>
       <pubsub xmlns=quot;http://jabber.org/protocol/pubsubquot;>
         <publish node=quot;queenly_proclamationsquot;>
           <item>
             <entry xmlns=quot;http://www.w3.org/2005/Atomquot;>
               <title>A new thought</title>
               <summary>Off with their heads!</summary>
               <link rel=quot;alternatequot; type=quot;text/htmlquot;
                      href=quot;http://wonderland.lit/1865/quot;/>
               <id>tag:wonderland.lit,1865:entry-42</id>
               <published>1865-12-13T18:30:02Z</published>
               <updated>1865-12-13T18:30:02Z</updated>
             </entry>
           </item>
         </publish>
       </pubsub>
     </iq>                                                   43


Tuesday, March 3, 2009
PubSub: Receiving events
     <message from=quot;notify.wonderland.litquot; to=quot;alice@wonderland.litquot;>
       <body>A new thought: off with their heads!</body>
       <event xmlns=quot;http://jabber.org/protocol/pubsub#eventquot;>
         <items node=quot;queenly_proclamationsquot; id=quot;bl38pahu98hquot;>
           <item id=quot;zi2ba967quot;>
             <entry xmlns=quot;http://www.w3.org/2005/Atomquot;>
                <title>A new thought</title>
                <summary>Off with their heads!</summary>
                <link rel=quot;alternatequot; type=quot;text/htmlquot; h
                      ref=quot;http://wonderland.lit/1865/quot;/>
                <id>tag:wonderland.lit,1865:entry-42</id>
                <published>1865-12-13T18:30:02Z</published>
                <updated>1865-12-13T18:30:02Z</updated>
             </entry>
           </item>
         </items>
       </event>
     </message>
                                                                        44


Tuesday, March 3, 2009
Extended Presence




                         45


Tuesday, March 3, 2009
Extended Presence
         Publish extra information about yourself




                                                    45


Tuesday, March 3, 2009
Extended Presence
         Publish extra information about yourself
             What music are you currently listening to?




                                                          45


Tuesday, March 3, 2009
Extended Presence
         Publish extra information about yourself
             What music are you currently listening to?
             Where are you right now?




                                                          45


Tuesday, March 3, 2009
Extended Presence
         Publish extra information about yourself
             What music are you currently listening to?
             Where are you right now?
             What are you doing?




                                                          45


Tuesday, March 3, 2009
Extended Presence
         Publish extra information about yourself
             What music are you currently listening to?
             Where are you right now?
             What are you doing?
         Used to be added to regular presence




                                                          45


Tuesday, March 3, 2009
Extended Presence
         Publish extra information about yourself
             What music are you currently listening to?
             Where are you right now?
             What are you doing?
         Used to be added to regular presence
             Doesn’t scale




                                                          45


Tuesday, March 3, 2009
Extended Presence
         Publish extra information about yourself
             What music are you currently listening to?
             Where are you right now?
             What are you doing?
         Used to be added to regular presence
             Doesn’t scale
             ‘Spams’ people with unwanted information




                                                          45


Tuesday, March 3, 2009
Extended Presence
         Publish extra information about yourself
             What music are you currently listening to?
             Where are you right now?
             What are you doing?
         Used to be added to regular presence
             Doesn’t scale
             ‘Spams’ people with unwanted information
         Implemented on top of PubSub



                                                          45


Tuesday, March 3, 2009
Extended Presence




                         46


Tuesday, March 3, 2009
Extended presence




                         47


Tuesday, March 3, 2009
Jingle




                         48


Tuesday, March 3, 2009
Jingle
         Voice, Video, Multimedia, P2P




                                         48


Tuesday, March 3, 2009
Jingle
         Voice, Video, Multimedia, P2P
         XMPP is not optimized to send data streams




                                                      48


Tuesday, March 3, 2009
Jingle
         Voice, Video, Multimedia, P2P
         XMPP is not optimized to send data streams
         Use XMPP (Jingle) to set up a direct connection
         between points




                                                           48


Tuesday, March 3, 2009
Jingle
         Voice, Video, Multimedia, P2P
         XMPP is not optimized to send data streams
         Use XMPP (Jingle) to set up a direct connection
         between points
             Negotiate what (Audio/Video) and how (UDP, TCP) you are
             going to send it




                                                                       48


Tuesday, March 3, 2009
Jingle
         Voice, Video, Multimedia, P2P
         XMPP is not optimized to send data streams
         Use XMPP (Jingle) to set up a direct connection
         between points
             Negotiate what (Audio/Video) and how (UDP, TCP) you are
             going to send it
         Use streaming protocols (RTP,...) to stream the data
         over the negotiated direct connection



                                                                       48


Tuesday, March 3, 2009
Jingle
         Voice, Video, Multimedia, P2P
         XMPP is not optimized to send data streams
         Use XMPP (Jingle) to set up a direct connection
         between points
             Negotiate what (Audio/Video) and how (UDP, TCP) you are
             going to send it
         Use streaming protocols (RTP,...) to stream the data
         over the negotiated direct connection
         (Renegotiation during data session)

                                                                       48


Tuesday, March 3, 2009
Jingle
         Voice, Video, Multimedia, P2P
         XMPP is not optimized to send data streams
         Use XMPP (Jingle) to set up a direct connection
         between points
             Negotiate what (Audio/Video) and how (UDP, TCP) you are
             going to send it
         Use streaming protocols (RTP,...) to stream the data
         over the negotiated direct connection
         (Renegotiation during data session)
         NAT traversal using standard technologies
                                                                       48


Tuesday, March 3, 2009
Jingle
         Voice, Video, Multimedia, P2P
         XMPP is not optimized to send data streams
         Use XMPP (Jingle) to set up a direct connection
         between points
             Negotiate what (Audio/Video) and how (UDP, TCP) you are
             going to send it
         Use streaming protocols (RTP,...) to stream the data
         over the negotiated direct connection
         (Renegotiation during data session)
         NAT traversal using standard technologies
             TURN, STUN, ICE                                           48


Tuesday, March 3, 2009
File Transfer




                         49


Tuesday, March 3, 2009
File Transfer
      Various ways of transferring files




                                          49


Tuesday, March 3, 2009
File Transfer
      Various ways of transferring files
          Tiny pieces of data are sent in one stanza




                                                       49


Tuesday, March 3, 2009
File Transfer
      Various ways of transferring files
          Tiny pieces of data are sent in one stanza
          Small pieces of data are sent in a set of consequent <iq/>
          stanzas




                                                                       49


Tuesday, March 3, 2009
File Transfer
      Various ways of transferring files
          Tiny pieces of data are sent in one stanza
          Small pieces of data are sent in a set of consequent <iq/>
          stanzas
          Larger pieces of data are sent out of band




                                                                       49


Tuesday, March 3, 2009
File Transfer
      Various ways of transferring files
          Tiny pieces of data are sent in one stanza
          Small pieces of data are sent in a set of consequent <iq/>
          stanzas
          Larger pieces of data are sent out of band
              Using SOCKS5




                                                                       49


Tuesday, March 3, 2009
File Transfer
      Various ways of transferring files
          Tiny pieces of data are sent in one stanza
          Small pieces of data are sent in a set of consequent <iq/>
          stanzas
          Larger pieces of data are sent out of band
              Using SOCKS5
              Using older Jingle-like protocol




                                                                       49


Tuesday, March 3, 2009
File Transfer
      Various ways of transferring files
          Tiny pieces of data are sent in one stanza
          Small pieces of data are sent in a set of consequent <iq/>
          stanzas
          Larger pieces of data are sent out of band
              Using SOCKS5
              Using older Jingle-like protocol
              Being extended to use Jingle




                                                                       49


Tuesday, March 3, 2009
BOSH




                         50


Tuesday, March 3, 2009
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up




                                                 50


Tuesday, March 3, 2009
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient




                                                 50


Tuesday, March 3, 2009
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient
             Long connections drain batteries on mobile phones




                                                                 50


Tuesday, March 3, 2009
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient
             Long connections drain batteries on mobile phones
             Web clients cannot keep state (open connections)




                                                                 50


Tuesday, March 3, 2009
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient
             Long connections drain batteries on mobile phones
             Web clients cannot keep state (open connections)
             Bad network connectivity




                                                                 50


Tuesday, March 3, 2009
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient
             Long connections drain batteries on mobile phones
             Web clients cannot keep state (open connections)
             Bad network connectivity
         Bidirectional streams Over Synchronous HTTP




                                                                 50


Tuesday, March 3, 2009
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient
             Long connections drain batteries on mobile phones
             Web clients cannot keep state (open connections)
             Bad network connectivity
         Bidirectional streams Over Synchronous HTTP
             XMPP over HTTP




                                                                 50


Tuesday, March 3, 2009
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient
             Long connections drain batteries on mobile phones
             Web clients cannot keep state (open connections)
             Bad network connectivity
         Bidirectional streams Over Synchronous HTTP
             XMPP over HTTP
         Cunning mechanism of not having to poll for new
         messages

                                                                 50


Tuesday, March 3, 2009
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient
             Long connections drain batteries on mobile phones
             Web clients cannot keep state (open connections)
             Bad network connectivity
         Bidirectional streams Over Synchronous HTTP
             XMPP over HTTP
         Cunning mechanism of not having to poll for new
         messages
             Piggyback incoming messages on HTTP response
                                                                 50


Tuesday, March 3, 2009
BOSH

    POST /webclient HTTP/1.1
    Host: bosh.wonderland.lit
    Content-Type: text/xml; charset=utf-8
    Content-Length: 205

    <body rid=quot;90029205quot; sid=quot;3m1ts1htd1squot;
          xmlns=quot;http://jabber.org/protocol/httpbindquot;>

       <message to=quot;sister@realworld.litquot; xmlns=quot;jabber:clientquot;>
         <body>Help, I fell down the rabbit hole!</body>
       </message>

    </body>




                                                                   51


Tuesday, March 3, 2009
Serverless Messaging




                            52


Tuesday, March 3, 2009
Serverless Messaging
         Sometimes, a server is not available




                                                52


Tuesday, March 3, 2009
Serverless Messaging
         Sometimes, a server is not available
             Remote location without internet




                                                52


Tuesday, March 3, 2009
Serverless Messaging
         Sometimes, a server is not available
             Remote location without internet
             Conference location with many unknown people you want to
             communicate wit




                                                                        52


Tuesday, March 3, 2009
Serverless Messaging
         Sometimes, a server is not available
             Remote location without internet
             Conference location with many unknown people you want to
             communicate wit
         Serverless messaging




                                                                        52


Tuesday, March 3, 2009
Serverless Messaging
         Sometimes, a server is not available
             Remote location without internet
             Conference location with many unknown people you want to
             communicate wit
         Serverless messaging
         Uses zero-configuration (Apple) to discover entities
         on the local network




                                                                        52


Tuesday, March 3, 2009
Serverless Messaging
         Sometimes, a server is not available
             Remote location without internet
             Conference location with many unknown people you want to
             communicate wit
         Serverless messaging
         Uses zero-configuration (Apple) to discover entities
         on the local network
             mDNS, DNS-SD




                                                                        52


Tuesday, March 3, 2009
Serverless Messaging
         Sometimes, a server is not available
             Remote location without internet
             Conference location with many unknown people you want to
             communicate wit
         Serverless messaging
         Uses zero-configuration (Apple) to discover entities
         on the local network
             mDNS, DNS-SD
         Open connection directly to other connection, and
         send XMPP over that connection
                                                                        52


Tuesday, March 3, 2009
Serverless Messaging
         Sometimes, a server is not available
             Remote location without internet
             Conference location with many unknown people you want to
             communicate wit
         Serverless messaging
         Uses zero-configuration (Apple) to discover entities
         on the local network
             mDNS, DNS-SD
         Open connection directly to other connection, and
         send XMPP over that connection
         iChat’s Rendez-vous/Bonjour                                    52


Tuesday, March 3, 2009
State of the bulb


Tuesday, March 3, 2009
What is the XSF working on?




                                   54


Tuesday, March 3, 2009
What is the XSF working on?
         E2E security




                                   54


Tuesday, March 3, 2009
What is the XSF working on?
         E2E security
         Whiteboarding




                                   54


Tuesday, March 3, 2009
What is the XSF working on?
         E2E security
         Whiteboarding
         File sharing / personal media networks




                                                  54


Tuesday, March 3, 2009
What is the XSF working on?
         E2E security
         Whiteboarding
         File sharing / personal media networks
         World domination




                                                  54


Tuesday, March 3, 2009
Conclusion


Tuesday, March 3, 2009
Join the conversation
         http://xmpp.org/
         mailto:jdev@jabber.org
         xmpp:jdev@conference.jabber.org
         [mailto:|xmpp:]stpeter@jabber.org
         [mailto:|xmpp:]remko@el-tramo.be
         Jabber/XMPP booth @ FOSDEM
         XMPP Summit on Monday



                                             56


Tuesday, March 3, 2009
Conclusion




                         57


Tuesday, March 3, 2009
Conclusion
         The real-time Internet is coming




                                            57


Tuesday, March 3, 2009
Conclusion
         The real-time Internet is coming
         Build competitive advantage using open
         technologies




                                                  57


Tuesday, March 3, 2009
Conclusion
         The real-time Internet is coming
         Build competitive advantage using open
         technologies
         What problems can you solve with XMPP?




                                                  57


Tuesday, March 3, 2009
Conclusion
         The real-time Internet is coming
         Build competitive advantage using open
         technologies
         What problems can you solve with XMPP?
         Join the conversation




                                                  57


Tuesday, March 3, 2009
Conclusion
         The real-time Internet is coming
         Build competitive advantage using open
         technologies
         What problems can you solve with XMPP?
         Join the conversation
         Happy Jabbering!




                                                  57


Tuesday, March 3, 2009
Conclusion
         The real-time Internet is coming
         Build competitive advantage using open
         technologies
         What problems can you solve with XMPP?
         Join the conversation
         Happy Jabbering!




                         More info inside
                                                  57


Tuesday, March 3, 2009

Contenu connexe

Tendances

AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...
AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...
AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...Nome Sobrenome
 
Turbot - A Next Generation Botnet
Turbot - A Next Generation BotnetTurbot - A Next Generation Botnet
Turbot - A Next Generation BotnetItzik Kotler
 
Protecting Plone from the Big, Bad Internet
Protecting Plone from the Big, Bad InternetProtecting Plone from the Big, Bad Internet
Protecting Plone from the Big, Bad InternetErik Rose
 
Realtime Communication Techniques with PHP
Realtime Communication Techniques with PHPRealtime Communication Techniques with PHP
Realtime Communication Techniques with PHPWaterSpout
 
Building your own open-source voice assistant
Building your own open-source voice assistantBuilding your own open-source voice assistant
Building your own open-source voice assistantAll Things Open
 
DIY Jarvis All Things Open 2019
DIY Jarvis All Things Open 2019DIY Jarvis All Things Open 2019
DIY Jarvis All Things Open 2019Wes Widner
 
How to make DSL
How to make DSLHow to make DSL
How to make DSLYukio Goto
 
โครงสร้างและระบบเครือข่ายคอมพิวเตอร์
โครงสร้างและระบบเครือข่ายคอมพิวเตอร์โครงสร้างและระบบเครือข่ายคอมพิวเตอร์
โครงสร้างและระบบเครือข่ายคอมพิวเตอร์Kevalee Pichetpan
 
基于 Google protobuf 的 webgame 网络协议设计
基于 Google protobuf 的 webgame 网络协议设计基于 Google protobuf 的 webgame 网络协议设计
基于 Google protobuf 的 webgame 网络协议设计勇浩 赖
 
Massive emailing with Linux, Postfix and Ruby on Rails
Massive emailing with Linux, Postfix and Ruby on RailsMassive emailing with Linux, Postfix and Ruby on Rails
Massive emailing with Linux, Postfix and Ruby on Railsibelmonte
 
Computer network (10)
Computer network (10)Computer network (10)
Computer network (10)NYversity
 
gRPC or Rest, why not both?
gRPC or Rest, why not both?gRPC or Rest, why not both?
gRPC or Rest, why not both?Mohammad Murad
 

Tendances (19)

AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...
AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...
AstriCon 2016 - Using Asterisk and XMPP to provide greater tools to your cust...
 
OTR and XMPP
OTR and XMPPOTR and XMPP
OTR and XMPP
 
Os Tucker
Os TuckerOs Tucker
Os Tucker
 
ScavengerEXA
ScavengerEXAScavengerEXA
ScavengerEXA
 
Turbot - A Next Generation Botnet
Turbot - A Next Generation BotnetTurbot - A Next Generation Botnet
Turbot - A Next Generation Botnet
 
I Lab4 Usecases
I Lab4 UsecasesI Lab4 Usecases
I Lab4 Usecases
 
Protecting Plone from the Big, Bad Internet
Protecting Plone from the Big, Bad InternetProtecting Plone from the Big, Bad Internet
Protecting Plone from the Big, Bad Internet
 
Realtime Communication Techniques with PHP
Realtime Communication Techniques with PHPRealtime Communication Techniques with PHP
Realtime Communication Techniques with PHP
 
Building your own open-source voice assistant
Building your own open-source voice assistantBuilding your own open-source voice assistant
Building your own open-source voice assistant
 
DIY Jarvis All Things Open 2019
DIY Jarvis All Things Open 2019DIY Jarvis All Things Open 2019
DIY Jarvis All Things Open 2019
 
How to make DSL
How to make DSLHow to make DSL
How to make DSL
 
โครงสร้างและระบบเครือข่ายคอมพิวเตอร์
โครงสร้างและระบบเครือข่ายคอมพิวเตอร์โครงสร้างและระบบเครือข่ายคอมพิวเตอร์
โครงสร้างและระบบเครือข่ายคอมพิวเตอร์
 
基于 Google protobuf 的 webgame 网络协议设计
基于 Google protobuf 的 webgame 网络协议设计基于 Google protobuf 的 webgame 网络协议设计
基于 Google protobuf 的 webgame 网络协议设计
 
Massive emailing with Linux, Postfix and Ruby on Rails
Massive emailing with Linux, Postfix and Ruby on RailsMassive emailing with Linux, Postfix and Ruby on Rails
Massive emailing with Linux, Postfix and Ruby on Rails
 
Flower and celery
Flower and celeryFlower and celery
Flower and celery
 
Computer network (10)
Computer network (10)Computer network (10)
Computer network (10)
 
Naked BGP
Naked BGPNaked BGP
Naked BGP
 
gRPC or Rest, why not both?
gRPC or Rest, why not both?gRPC or Rest, why not both?
gRPC or Rest, why not both?
 
ExaBGP at LINX 83
ExaBGP at LINX 83ExaBGP at LINX 83
ExaBGP at LINX 83
 

En vedette

XMPP Intro 1101 - 2008
XMPP Intro 1101 - 2008XMPP Intro 1101 - 2008
XMPP Intro 1101 - 2008Steffen Larsen
 
The Real Time Web with XMPP
The Real Time Web with XMPPThe Real Time Web with XMPP
The Real Time Web with XMPPJack Moffitt
 
Instant messaging-final
Instant messaging-finalInstant messaging-final
Instant messaging-finalroutbisu
 
M2M, IOT, Device Managment: COAP/LWM2M to rule them all?
M2M, IOT, Device Managment: COAP/LWM2M to rule them all?M2M, IOT, Device Managment: COAP/LWM2M to rule them all?
M2M, IOT, Device Managment: COAP/LWM2M to rule them all?Julien Vermillard
 
How to configure Instant Messaging (IM) at ringEmail?
How to configure Instant Messaging (IM) at ringEmail?How to configure Instant Messaging (IM) at ringEmail?
How to configure Instant Messaging (IM) at ringEmail?Clearhub Pte Ltd
 
Communicatio Skills
Communicatio  Skills Communicatio  Skills
Communicatio Skills SanaRiaz789
 
Scaling the Web to Billions of Nodes: Towards the IPv6 “Internet of Things” b...
Scaling the Web to Billions of Nodes: Towards the IPv6 “Internet of Things” b...Scaling the Web to Billions of Nodes: Towards the IPv6 “Internet of Things” b...
Scaling the Web to Billions of Nodes: Towards the IPv6 “Internet of Things” b...gogo6
 
Open Source XMPP for Cloud Services
Open Source XMPP for Cloud ServicesOpen Source XMPP for Cloud Services
Open Source XMPP for Cloud Servicesmattjive
 
Switch to Python 3…now…immediately
Switch to Python 3…now…immediatelySwitch to Python 3…now…immediately
Switch to Python 3…now…immediatelyRussel Winder
 
XMPP Technical Overview + Jingle Protocol Study
XMPP Technical Overview + Jingle Protocol StudyXMPP Technical Overview + Jingle Protocol Study
XMPP Technical Overview + Jingle Protocol StudyValérian Saliou
 
Onion network architecture
Onion network architectureOnion network architecture
Onion network architecturemahdi ataeyan
 
Protocols for IoT
Protocols for IoTProtocols for IoT
Protocols for IoTAmit Dev
 
Real life XMPP Instant Messaging
Real life XMPP Instant MessagingReal life XMPP Instant Messaging
Real life XMPP Instant MessagingMickaël Rémond
 
IPSN 2009 Contiki / uIP tutorial
IPSN 2009 Contiki / uIP tutorialIPSN 2009 Contiki / uIP tutorial
IPSN 2009 Contiki / uIP tutorialadamdunkels
 
gogonetlive 4 conference keynote on Internet of Things
gogonetlive 4 conference keynote on Internet of Thingsgogonetlive 4 conference keynote on Internet of Things
gogonetlive 4 conference keynote on Internet of ThingsJoachim Lindborg
 
XSF - XMPP Standards Foundation
XSF - XMPP Standards FoundationXSF - XMPP Standards Foundation
XSF - XMPP Standards FoundationPeter Waher
 

En vedette (20)

XMPP Intro 1101 - 2008
XMPP Intro 1101 - 2008XMPP Intro 1101 - 2008
XMPP Intro 1101 - 2008
 
Xmpp
XmppXmpp
Xmpp
 
The Real Time Web with XMPP
The Real Time Web with XMPPThe Real Time Web with XMPP
The Real Time Web with XMPP
 
Instant messaging-final
Instant messaging-finalInstant messaging-final
Instant messaging-final
 
M2M, IOT, Device Managment: COAP/LWM2M to rule them all?
M2M, IOT, Device Managment: COAP/LWM2M to rule them all?M2M, IOT, Device Managment: COAP/LWM2M to rule them all?
M2M, IOT, Device Managment: COAP/LWM2M to rule them all?
 
Understanding the Internet of Things Protocols
Understanding the Internet of Things ProtocolsUnderstanding the Internet of Things Protocols
Understanding the Internet of Things Protocols
 
How to configure Instant Messaging (IM) at ringEmail?
How to configure Instant Messaging (IM) at ringEmail?How to configure Instant Messaging (IM) at ringEmail?
How to configure Instant Messaging (IM) at ringEmail?
 
Communicatio Skills
Communicatio  Skills Communicatio  Skills
Communicatio Skills
 
Scaling the Web to Billions of Nodes: Towards the IPv6 “Internet of Things” b...
Scaling the Web to Billions of Nodes: Towards the IPv6 “Internet of Things” b...Scaling the Web to Billions of Nodes: Towards the IPv6 “Internet of Things” b...
Scaling the Web to Billions of Nodes: Towards the IPv6 “Internet of Things” b...
 
Open Source XMPP for Cloud Services
Open Source XMPP for Cloud ServicesOpen Source XMPP for Cloud Services
Open Source XMPP for Cloud Services
 
Switch to Python 3…now…immediately
Switch to Python 3…now…immediatelySwitch to Python 3…now…immediately
Switch to Python 3…now…immediately
 
XMPP Technical Overview + Jingle Protocol Study
XMPP Technical Overview + Jingle Protocol StudyXMPP Technical Overview + Jingle Protocol Study
XMPP Technical Overview + Jingle Protocol Study
 
Onion network architecture
Onion network architectureOnion network architecture
Onion network architecture
 
Protocols for IoT
Protocols for IoTProtocols for IoT
Protocols for IoT
 
IoT transport protocols
IoT transport protocolsIoT transport protocols
IoT transport protocols
 
Real life XMPP Instant Messaging
Real life XMPP Instant MessagingReal life XMPP Instant Messaging
Real life XMPP Instant Messaging
 
IPSN 2009 Contiki / uIP tutorial
IPSN 2009 Contiki / uIP tutorialIPSN 2009 Contiki / uIP tutorial
IPSN 2009 Contiki / uIP tutorial
 
gogonetlive 4 conference keynote on Internet of Things
gogonetlive 4 conference keynote on Internet of Thingsgogonetlive 4 conference keynote on Internet of Things
gogonetlive 4 conference keynote on Internet of Things
 
XSF - XMPP Standards Foundation
XSF - XMPP Standards FoundationXSF - XMPP Standards Foundation
XSF - XMPP Standards Foundation
 
Valparaiso
ValparaisoValparaiso
Valparaiso
 

Dernier

Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialJoão Esperancinha
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sectoritnewsafrica
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 

Dernier (20)

Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorial
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 

XMPP 101

  • 1. XMPP 101 Remko Tronçon Peter Saint-Andre Tuesday, March 3, 2009
  • 2. Overview Introduction XMPP Basics Example code Extensions State of the bulb Conclusion 2 Tuesday, March 3, 2009
  • 4. About Us 4 Tuesday, March 3, 2009
  • 5. About Us Peter: Documentation guy and specification author 4 Tuesday, March 3, 2009
  • 6. About Us Peter: Documentation guy and specification author Remko: Developer for Psi client and other projects 4 Tuesday, March 3, 2009
  • 7. About Us Peter: Documentation guy and specification author Remko: Developer for Psi client and other projects Co-authors (with Kevin Smith) of XMPP: The Definitive Guide (O'Reilly, 2009) 4 Tuesday, March 3, 2009
  • 8. About You 5 Tuesday, March 3, 2009
  • 9. About You Why are you here? 5 Tuesday, March 3, 2009
  • 10. About You Why are you here? What do you want to build? 5 Tuesday, March 3, 2009
  • 11. About You Why are you here? What do you want to build? What is your background? (web, client-server, ...) 5 Tuesday, March 3, 2009
  • 12. What is XMPP? 6 Tuesday, March 3, 2009
  • 13. What is XMPP? eXtensible Messaging and Presence Protocol 6 Tuesday, March 3, 2009
  • 14. What is XMPP? eXtensible Messaging and Presence Protocol Jabber 6 Tuesday, March 3, 2009
  • 15. What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system 6 Tuesday, March 3, 2009
  • 16. What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML 6 Tuesday, March 3, 2009
  • 17. What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML Alice Sister alice@wdland.lit sister@rlworld.lit 6 Tuesday, March 3, 2009
  • 18. What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML wdland.lit rlworld.lit server server Alice Sister alice@wdland.lit sister@rlworld.lit 6 Tuesday, March 3, 2009
  • 19. What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML wdland.lit rlworld.lit server server Alice Sister alice@wdland.lit sister@rlworld.lit 6 Tuesday, March 3, 2009
  • 20. What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML wdland.lit rlworld.lit server server <message to=’sister@rlworld.lit’> <body>Hi there!</body> </message> Alice Sister alice@wdland.lit sister@rlworld.lit 6 Tuesday, March 3, 2009
  • 21. What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML wdland.lit rlworld.lit server server <message to=’sister@rlworld.lit’> <body>Hi there!</body> </message> Alice Sister alice@wdland.lit sister@rlworld.lit 6 Tuesday, March 3, 2009
  • 22. What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML wdland.lit rlworld.lit ... server server <message to=’sister@rlworld.lit’> <body>Hi there!</body> </message> Alice Sister alice@wdland.lit sister@rlworld.lit 6 Tuesday, March 3, 2009
  • 23. What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system Routes small snippets of XML wdland.lit rlworld.lit ... server server <message to=’sister@rlworld.lit’> <message from=’alice@wland.lit’> <body>Hi there!</body> <body>Hi there!</body> </message> </message> Alice Sister alice@wdland.lit sister@rlworld.lit 6 Tuesday, March 3, 2009
  • 24. What can you do with XMPP? 7 Tuesday, March 3, 2009
  • 25. What can you do with XMPP? Instant Messaging 7 Tuesday, March 3, 2009
  • 26. What can you do with XMPP? Real-time Social Networking 8 Tuesday, March 3, 2009
  • 27. What can you do with XMPP? Gaming 9 Tuesday, March 3, 2009
  • 28. What can you do with XMPP? Voice & Video 10 Tuesday, March 3, 2009
  • 29. What can you do with XMPP? Mobile apps / Geolocation 11 Tuesday, March 3, 2009
  • 30. What can you do with XMPP? <insert your idea here> 12 Tuesday, March 3, 2009
  • 31. XMPP ... 13 Tuesday, March 3, 2009
  • 32. XMPP ... ... is an open standard (RFC 3920 + 3921, XSF Extensions) 13 Tuesday, March 3, 2009
  • 33. XMPP ... ... is an open standard (RFC 3920 + 3921, XSF Extensions) ... is decentralized (federated) 13 Tuesday, March 3, 2009
  • 34. XMPP ... ... is an open standard (RFC 3920 + 3921, XSF Extensions) ... is decentralized (federated) ... has strong security (TLS) 13 Tuesday, March 3, 2009
  • 35. XMPP ... ... is an open standard (RFC 3920 + 3921, XSF Extensions) ... is decentralized (federated) ... has strong security (TLS) ... has lots of open-source projects (but other licensing allowed) 13 Tuesday, March 3, 2009
  • 36. XMPP ... ... is an open standard (RFC 3920 + 3921, XSF Extensions) ... is decentralized (federated) ... has strong security (TLS) ... has lots of open-source projects (but other licensing allowed) ... has an active, open community 13 Tuesday, March 3, 2009
  • 37. What does XMPP provide? 14 Tuesday, March 3, 2009
  • 38. What does XMPP provide? Channel encryption and authentication 14 Tuesday, March 3, 2009
  • 39. What does XMPP provide? Channel encryption and authentication Presence and contact lists 14 Tuesday, March 3, 2009
  • 40. What does XMPP provide? Channel encryption and authentication Presence and contact lists One-to-one and multi-party messaging 14 Tuesday, March 3, 2009
  • 41. What does XMPP provide? Channel encryption and authentication Presence and contact lists One-to-one and multi-party messaging Alerts and notifications (PubSub) 14 Tuesday, March 3, 2009
  • 42. What does XMPP provide? Channel encryption and authentication Presence and contact lists One-to-one and multi-party messaging Alerts and notifications (PubSub) Service discovery and device capabilities 14 Tuesday, March 3, 2009
  • 43. What does XMPP provide? Channel encryption and authentication Presence and contact lists One-to-one and multi-party messaging Alerts and notifications (PubSub) Service discovery and device capabilities Peer-to-peer media sessions (Jingle) 14 Tuesday, March 3, 2009
  • 44. What does XMPP provide? Channel encryption and authentication Presence and contact lists One-to-one and multi-party messaging Alerts and notifications (PubSub) Service discovery and device capabilities Peer-to-peer media sessions (Jingle) Data forms and remote commands 14 Tuesday, March 3, 2009
  • 45. What does XMPP provide? Channel encryption and authentication Presence and contact lists One-to-one and multi-party messaging Alerts and notifications (PubSub) Service discovery and device capabilities Peer-to-peer media sessions (Jingle) Data forms and remote commands And more (lots of extensions) 14 Tuesday, March 3, 2009
  • 46. History 15 Tuesday, March 3, 2009
  • 47. History Invented by Jeremie Miller as Jabber (1998) 15 Tuesday, March 3, 2009
  • 48. History Invented by Jeremie Miller as Jabber (1998) First server + clients + libraries (1999-2000) 15 Tuesday, March 3, 2009
  • 49. History Invented by Jeremie Miller as Jabber (1998) First server + clients + libraries (1999-2000) More open source + commercial codebases (2000+) 15 Tuesday, March 3, 2009
  • 50. History Invented by Jeremie Miller as Jabber (1998) First server + clients + libraries (1999-2000) More open source + commercial codebases (2000+) Core standardization in IETF as XMPP (2002-2004) 15 Tuesday, March 3, 2009
  • 51. History Invented by Jeremie Miller as Jabber (1998) First server + clients + libraries (1999-2000) More open source + commercial codebases (2000+) Core standardization in IETF as XMPP (2002-2004) Development of extensions (2002+) 15 Tuesday, March 3, 2009
  • 52. History Invented by Jeremie Miller as Jabber (1998) First server + clients + libraries (1999-2000) More open source + commercial codebases (2000+) Core standardization in IETF as XMPP (2002-2004) Development of extensions (2002+) Serious adoption by Apple, Google, LiveJournal, Nokia, Cisco, etc. (2005+) 15 Tuesday, March 3, 2009
  • 53. History Invented by Jeremie Miller as Jabber (1998) First server + clients + libraries (1999-2000) More open source + commercial codebases (2000+) Core standardization in IETF as XMPP (2002-2004) Development of extensions (2002+) Serious adoption by Apple, Google, LiveJournal, Nokia, Cisco, etc. (2005+) Continuing work on improved security and more application types 15 Tuesday, March 3, 2009
  • 55. Architecture Web architecture 17 Tuesday, March 3, 2009
  • 56. Architecture Web architecture Browser 17 Tuesday, March 3, 2009
  • 57. Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
  • 58. Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
  • 59. Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
  • 60. Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
  • 61. Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
  • 62. Architecture E-Mail architecture 18 Tuesday, March 3, 2009
  • 63. Architecture E-Mail architecture E-Mail client E-Mail client alice@wonderland.lit sister@realworld.lit 18 Tuesday, March 3, 2009
  • 64. Architecture E-Mail architecture wonderland.lit rabbithole.lit realworld.lit server server server E-Mail client E-Mail client alice@wonderland.lit sister@realworld.lit 18 Tuesday, March 3, 2009
  • 65. Architecture E-Mail architecture wonderland.lit rabbithole.lit realworld.lit server server server E-Mail client E-Mail client alice@wonderland.lit sister@realworld.lit 18 Tuesday, March 3, 2009
  • 66. Architecture E-Mail architecture wonderland.lit rabbithole.lit realworld.lit server server server E-Mail client E-Mail client alice@wonderland.lit sister@realworld.lit 18 Tuesday, March 3, 2009
  • 67. Architecture E-Mail architecture wonderland.lit rabbithole.lit realworld.lit server server server E-Mail client E-Mail client alice@wonderland.lit sister@realworld.lit 18 Tuesday, March 3, 2009
  • 68. Architecture E-Mail architecture wonderland.lit rabbithole.lit realworld.lit server server server E-Mail client E-Mail client alice@wonderland.lit sister@realworld.lit 18 Tuesday, March 3, 2009
  • 69. Architecture XMPP Architecture realworld.lit wonderland.lit server server XMPP client XMPP client sister@realworld.lit alice@wonderland.lit 19 Tuesday, March 3, 2009
  • 70. Architecture XMPP Architecture realworld.lit wonderland.lit server server XMPP client XMPP client sister@realworld.lit alice@wonderland.lit 19 Tuesday, March 3, 2009
  • 71. Architecture XMPP Architecture realworld.lit wonderland.lit server server XMPP client XMPP client sister@realworld.lit alice@wonderland.lit 19 Tuesday, March 3, 2009
  • 72. Architecture XMPP Architecture realworld.lit wonderland.lit server server XMPP client XMPP client sister@realworld.lit alice@wonderland.lit 19 Tuesday, March 3, 2009
  • 73. Architecture 20 Tuesday, March 3, 2009
  • 74. Architecture Client-server 20 Tuesday, March 3, 2009
  • 75. Architecture Client-server Client developers can focus on user experience 20 Tuesday, March 3, 2009
  • 76. Architecture Client-server Client developers can focus on user experience Server developers can focus on relaibility & scalability 20 Tuesday, March 3, 2009
  • 77. Architecture Client-server Client developers can focus on user experience Server developers can focus on relaibility & scalability Decentralized 20 Tuesday, March 3, 2009
  • 78. Architecture Client-server Client developers can focus on user experience Server developers can focus on relaibility & scalability Decentralized Robust (no single point of failure) 20 Tuesday, March 3, 2009
  • 79. Architecture Client-server Client developers can focus on user experience Server developers can focus on relaibility & scalability Decentralized Robust (no single point of failure) Easier to manage 20 Tuesday, March 3, 2009
  • 80. Architecture Client-server Client developers can focus on user experience Server developers can focus on relaibility & scalability Decentralized Robust (no single point of failure) Easier to manage No multiple hops 20 Tuesday, March 3, 2009
  • 81. Architecture Client-server Client developers can focus on user experience Server developers can focus on relaibility & scalability Decentralized Robust (no single point of failure) Easier to manage No multiple hops Harder to spoof 20 Tuesday, March 3, 2009
  • 82. Addresses Jabber ID (JID) 21 Tuesday, March 3, 2009
  • 83. Addresses Jabber ID (JID) Domain wonderland.lit 21 Tuesday, March 3, 2009
  • 84. Addresses Jabber ID (JID) User Domain alice@ wonderland.lit 21 Tuesday, March 3, 2009
  • 85. Addresses Jabber ID (JID) User Domain alice@ wonderland.lit Bare JID 21 Tuesday, March 3, 2009
  • 86. Addresses Jabber ID (JID) User Domain alice@ wonderland.lit 21 Tuesday, March 3, 2009
  • 87. Addresses Jabber ID (JID) User Domain Resource alice@ wonderland.lit /TeaParty 21 Tuesday, March 3, 2009
  • 88. Addresses Jabber ID (JID) User Domain Resource alice@ wonderland.lit /TeaParty Full JID 21 Tuesday, March 3, 2009
  • 89. Streaming XML 22 Tuesday, March 3, 2009
  • 90. Streaming XML <stream:stream> 22 Tuesday, March 3, 2009
  • 91. Streaming XML <stream:stream> <presence/> 22 Tuesday, March 3, 2009
  • 92. Streaming XML <stream:stream> <presence/> <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> 22 Tuesday, March 3, 2009
  • 93. Streaming XML <stream:stream> <presence/> <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> 22 Tuesday, March 3, 2009
  • 94. Streaming XML <stream:stream> <presence/> <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> <message from=quot;queen@wonderland.litquot; to=quot;madhatter@wonderland.litquot;> <body>Off with his head!</body> </message> 22 Tuesday, March 3, 2009
  • 95. Streaming XML <stream:stream> <presence/> <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> <message from=quot;queen@wonderland.litquot; to=quot;madhatter@wonderland.litquot;> <body>Off with his head!</body> </message> <message from=quot;king@wonderland.litquot; to=quot;party@rooms.wonderland.litquot;> <body>You are all pardoned.</body> </message> 22 Tuesday, March 3, 2009
  • 96. Streaming XML <stream:stream> <presence/> <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> <message from=quot;queen@wonderland.litquot; to=quot;madhatter@wonderland.litquot;> <body>Off with his head!</body> </message> <message from=quot;king@wonderland.litquot; to=quot;party@rooms.wonderland.litquot;> <body>You are all pardoned.</body> </message> <presence type=quot;unavailablequot;/> 22 Tuesday, March 3, 2009
  • 97. Streaming XML <stream:stream> <presence/> <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> <message from=quot;queen@wonderland.litquot; to=quot;madhatter@wonderland.litquot;> <body>Off with his head!</body> </message> <message from=quot;king@wonderland.litquot; to=quot;party@rooms.wonderland.litquot;> <body>You are all pardoned.</body> </message> <presence type=quot;unavailablequot;/> </stream:stream> 22 Tuesday, March 3, 2009
  • 98. Communication Primitives Stanzas: 23 Tuesday, March 3, 2009
  • 99. Communication Primitives Stanzas: <message/> 23 Tuesday, March 3, 2009
  • 100. Communication Primitives Stanzas: <message/> <presence/> 23 Tuesday, March 3, 2009
  • 101. Communication Primitives Stanzas: <message/> <presence/> <iq/> 23 Tuesday, March 3, 2009
  • 102. Message Stanzas 24 Tuesday, March 3, 2009
  • 103. Message Stanzas <message from=quot;madhatter@wonderland.lit/fooquot; to=quot;alice@wonderland.litquot; type=quot;chatquot;> <body>Who are you?</body> <subject>Query</subject> </message> 24 Tuesday, March 3, 2009
  • 104. Message Stanzas <message from=quot;madhatter@wonderland.lit/fooquot; to=quot;alice@wonderland.litquot; type=quot;chatquot;> <body>Who are you?</body> <subject>Query</subject> </message> From, To 24 Tuesday, March 3, 2009
  • 105. Message Stanzas <message from=quot;madhatter@wonderland.lit/fooquot; to=quot;alice@wonderland.litquot; type=quot;chatquot;> <body>Who are you?</body> <subject>Query</subject> </message> From, To Types: normal, chat, groupchat, headline, error 24 Tuesday, March 3, 2009
  • 106. Message Stanzas <message from=quot;madhatter@wonderland.lit/fooquot; to=quot;alice@wonderland.litquot; type=quot;chatquot;> <body>Who are you?</body> <subject>Query</subject> </message> From, To Types: normal, chat, groupchat, headline, error Payloads: Body, Subject 24 Tuesday, March 3, 2009
  • 107. Presence Stanzas 25 Tuesday, March 3, 2009
  • 108. Presence Stanzas <presence from=quot;alice@wonderland.lit/pdaquot;> <show>xa</show> <status>down the rabbit hole!</status> </presence> 25 Tuesday, March 3, 2009
  • 109. Presence Stanzas <presence from=quot;alice@wonderland.lit/pdaquot;> <show>xa</show> <status>down the rabbit hole!</status> </presence> Advertise network availability (online/offline) 25 Tuesday, March 3, 2009
  • 110. Presence Stanzas <presence from=quot;alice@wonderland.lit/pdaquot;> <show>xa</show> <status>down the rabbit hole!</status> </presence> Advertise network availability (online/offline) ‘Show’ Statuses: Away, Do Not Disturb, Extended Away, Free for chat 25 Tuesday, March 3, 2009
  • 111. Presence Stanzas <presence from=quot;alice@wonderland.lit/pdaquot;> <show>xa</show> <status>down the rabbit hole!</status> </presence> Advertise network availability (online/offline) ‘Show’ Statuses: Away, Do Not Disturb, Extended Away, Free for chat Status messages 25 Tuesday, March 3, 2009
  • 112. Presence Stanzas <presence from=quot;alice@wonderland.lit/pdaquot;> <show>xa</show> <status>down the rabbit hole!</status> </presence> Advertise network availability (online/offline) ‘Show’ Statuses: Away, Do Not Disturb, Extended Away, Free for chat Status messages Typically used for contact lists/rosters 25 Tuesday, March 3, 2009
  • 113. Presence Stanzas <presence from=quot;alice@wonderland.lit/pdaquot;> <show>xa</show> <status>down the rabbit hole!</status> </presence> Advertise network availability (online/offline) ‘Show’ Statuses: Away, Do Not Disturb, Extended Away, Free for chat Status messages Typically used for contact lists/rosters 25 Tuesday, March 3, 2009
  • 114. Presence Stanzas <presence from=quot;alice@wonderland.lit/pdaquot;> <show>xa</show> <status>down the rabbit hole!</status> </presence> Advertise network availability (online/offline) ‘Show’ Statuses: Away, Do Not Disturb, Extended Away, Free for chat Status messages Typically used for contact lists/rosters Presence subscriptions 25 Tuesday, March 3, 2009
  • 115. IQ Stanzas 26 Tuesday, March 3, 2009
  • 116. IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> 26 Tuesday, March 3, 2009
  • 117. IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> 26 Tuesday, March 3, 2009
  • 118. IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> Request/Response 26 Tuesday, March 3, 2009
  • 119. IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> Request/Response Workflows, execute commands, query information 26 Tuesday, March 3, 2009
  • 120. IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> <iq type=quot;resultquot;> <query xmlns=quot;jabber:iq:rosterquot;> <item jid=quot;alice@wonderland.litquot;/> <item jid=quot;madhatter@wonderland.litquot;/> <item jid=quot;whiterabbit@wonderland.litquot;/> </query> </iq> Request/Response Workflows, execute commands, query information Similar to HTTP GET, POST, PUT 26 Tuesday, March 3, 2009
  • 121. IQ Stanzas Sender Receiver 27 Tuesday, March 3, 2009
  • 122. IQ Stanzas IQ-get Sender Receiver 27 Tuesday, March 3, 2009
  • 123. IQ Stanzas Sender Receiver IQ-result 27 Tuesday, March 3, 2009
  • 124. IQ Stanzas Sender Receiver 27 Tuesday, March 3, 2009
  • 125. IQ Stanzas IQ-set Sender Receiver 27 Tuesday, March 3, 2009
  • 126. IQ Stanzas Sender Receiver IQ-result 27 Tuesday, March 3, 2009
  • 127. IQ Stanzas Sender Receiver 27 Tuesday, March 3, 2009
  • 128. IQ Stanzas 28 Tuesday, March 3, 2009
  • 129. IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> 28 Tuesday, March 3, 2009
  • 130. IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Types: 28 Tuesday, March 3, 2009
  • 131. IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Types: get: Ask for information (HTTP GET) 28 Tuesday, March 3, 2009
  • 132. IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Types: get: Ask for information (HTTP GET) set: Provide information (HTTP POST/PUT) 28 Tuesday, March 3, 2009
  • 133. IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Types: get: Ask for information (HTTP GET) set: Provide information (HTTP POST/PUT) result: Returns requested information / acknowledge set 28 Tuesday, March 3, 2009
  • 134. IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Types: get: Ask for information (HTTP GET) set: Provide information (HTTP POST/PUT) result: Returns requested information / acknowledge set error 28 Tuesday, March 3, 2009
  • 135. Extensibility 29 Tuesday, March 3, 2009
  • 136. Extensibility Any XML child element can be used as a payload 29 Tuesday, March 3, 2009
  • 137. Extensibility Any XML child element can be used as a payload e.g. XHTML bodies, Atom feeds, XML-RPC, ... 29 Tuesday, March 3, 2009
  • 138. Extensibility Any XML child element can be used as a payload e.g. XHTML bodies, Atom feeds, XML-RPC, ... Namespaces to scope payloads <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> 29 Tuesday, March 3, 2009
  • 139. Extensibility Any XML child element can be used as a payload e.g. XHTML bodies, Atom feeds, XML-RPC, ... Namespaces to scope payloads <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Extensions typically developed @ XMPP Standards Foundation's 29 Tuesday, March 3, 2009
  • 140. Extensibility Any XML child element can be used as a payload e.g. XHTML bodies, Atom feeds, XML-RPC, ... Namespaces to scope payloads <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Extensions typically developed @ XMPP Standards Foundation's Open, developer-friendly standards process 29 Tuesday, March 3, 2009
  • 141. Extensibility Any XML child element can be used as a payload e.g. XHTML bodies, Atom feeds, XML-RPC, ... Namespaces to scope payloads <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Extensions typically developed @ XMPP Standards Foundation's Open, developer-friendly standards process Can write your own quot;privatequot; extensions for custom functionality 29 Tuesday, March 3, 2009
  • 142. Asynchronicity 30 Tuesday, March 3, 2009
  • 143. Asynchronicity Web 30 Tuesday, March 3, 2009
  • 144. Asynchronicity Web Send request to server 30 Tuesday, March 3, 2009
  • 145. Asynchronicity Web Send request to server Wait for response 30 Tuesday, March 3, 2009
  • 146. Asynchronicity Web Send request to server Wait for response Short-lived connections 30 Tuesday, March 3, 2009
  • 147. Asynchronicity Web Send request to server Wait for response Short-lived connections Jabber 30 Tuesday, March 3, 2009
  • 148. Asynchronicity Web Send request to server Wait for response Short-lived connections Jabber Long lived connection 30 Tuesday, March 3, 2009
  • 149. Asynchronicity Web Send request to server Wait for response Short-lived connections Jabber Long lived connection Events are sent out / come in asynchronously 30 Tuesday, March 3, 2009
  • 150. Asynchronicity Web Send request to server Wait for response Short-lived connections Jabber Long lived connection Events are sent out / come in asynchronously Different mindsets! 30 Tuesday, March 3, 2009
  • 152. Echo bot 32 Tuesday, March 3, 2009
  • 153. Echo bot Bots 32 Tuesday, March 3, 2009
  • 154. Echo bot Bots Unmanned clients 32 Tuesday, March 3, 2009
  • 155. Echo bot Bots Unmanned clients Connect to an XMPP server, and wait for commands / send events 32 Tuesday, March 3, 2009
  • 156. Echo bot Bots Unmanned clients Connect to an XMPP server, and wait for commands / send events Echo bot 32 Tuesday, March 3, 2009
  • 157. Echo bot Bots Unmanned clients Connect to an XMPP server, and wait for commands / send events Echo bot Echoes back every message that it receives 32 Tuesday, March 3, 2009
  • 159. Writing the Echo Bot 34 Tuesday, March 3, 2009
  • 160. Writing the Echo Bot Select a language to work in 34 Tuesday, March 3, 2009
  • 161. Writing the Echo Bot Select a language to work in e.g. Python 34 Tuesday, March 3, 2009
  • 162. Writing the Echo Bot Select a language to work in e.g. Python Select an XMPP library to do the low-level XMPP work 34 Tuesday, March 3, 2009
  • 163. Writing the Echo Bot Select a language to work in e.g. Python Select an XMPP library to do the low-level XMPP work e.g. SleekXMPP 34 Tuesday, March 3, 2009
  • 164. Writing the Echo Bot Select a language to work in e.g. Python Select an XMPP library to do the low-level XMPP work e.g. SleekXMPP Start coding 34 Tuesday, March 3, 2009
  • 165. SleekXMPP Python Echo Bot class EchoBot : def __init__(self, jid, password) : self.xmpp = sleekxmpp.ClientXMPP(jid, password) self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected) self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage) def run(self) : self.xmpp.connect() self.xmpp.process(threaded=False) def handleXMPPConnected(self, event): self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;) def handleIncomingMessage(self, message) : self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;]) def main() : bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;) bot.run() 35 Tuesday, March 3, 2009
  • 166. SleekXMPP Python Echo Bot class EchoBot : def __init__(self, jid, password) : self.xmpp = sleekxmpp.ClientXMPP(jid, password) self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected) self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage) def run(self) : self.xmpp.connect() self.xmpp.process(threaded=False) def handleXMPPConnected(self, event): self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;) def handleIncomingMessage(self, message) : self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;]) def main() : bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;) bot.run() 35 Tuesday, March 3, 2009
  • 167. SleekXMPP Python Echo Bot class EchoBot : def __init__(self, jid, password) : self.xmpp = sleekxmpp.ClientXMPP(jid, password) self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected) self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage) def run(self) : self.xmpp.connect() self.xmpp.process(threaded=False) def handleXMPPConnected(self, event): self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;) def handleIncomingMessage(self, message) : self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;]) def main() : bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;) bot.run() 35 Tuesday, March 3, 2009
  • 168. SleekXMPP Python Echo Bot class EchoBot : def __init__(self, jid, password) : self.xmpp = sleekxmpp.ClientXMPP(jid, password) self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected) self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage) def run(self) : self.xmpp.connect() self.xmpp.process(threaded=False) def handleXMPPConnected(self, event): self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;) def handleIncomingMessage(self, message) : self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;]) def main() : bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;) bot.run() 35 Tuesday, March 3, 2009
  • 169. SleekXMPP Python Echo Bot class EchoBot : def __init__(self, jid, password) : self.xmpp = sleekxmpp.ClientXMPP(jid, password) self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected) self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage) def run(self) : self.xmpp.connect() self.xmpp.process(threaded=False) def handleXMPPConnected(self, event): self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;) def handleIncomingMessage(self, message) : self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;]) def main() : bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;) bot.run() 35 Tuesday, March 3, 2009
  • 170. SleekXMPP Python Echo Bot class EchoBot : def __init__(self, jid, password) : self.xmpp = sleekxmpp.ClientXMPP(jid, password) self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected) self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage) def run(self) : self.xmpp.connect() self.xmpp.process(threaded=False) def handleXMPPConnected(self, event): self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;) def handleIncomingMessage(self, message) : self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;]) def main() : bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;) bot.run() 35 Tuesday, March 3, 2009
  • 171. SleekXMPP Python Echo Bot class EchoBot : def __init__(self, jid, password) : self.xmpp = sleekxmpp.ClientXMPP(jid, password) self.xmpp.add_event_handler(quot;session_startquot;, self.handleXMPPConnected) self.xmpp.add_event_handler(quot;messagequot;, self.handleIncomingMessage) def run(self) : self.xmpp.connect() self.xmpp.process(threaded=False) def handleXMPPConnected(self, event): self.xmpp.sendPresence(pstatus = quot;Send me a messagequot;) def handleIncomingMessage(self, message) : self.xmpp.sendMessage(message[quot;jidquot;], message[quot;messagequot;]) def main() : bot = EchoBot(quot;echobot@wonderland.lit/HelloWorldquot;, quot;mypassquot;) bot.run() 35 Tuesday, March 3, 2009
  • 173. Multi-User Chat 37 Tuesday, March 3, 2009
  • 174. Multi-User Chat 38 Tuesday, March 3, 2009
  • 175. Multi-User Chat Conversation with multiple users 38 Tuesday, March 3, 2009
  • 176. Multi-User Chat Conversation with multiple users Shared roster (with presence from all participating users) 38 Tuesday, March 3, 2009
  • 177. Multi-User Chat Conversation with multiple users Shared roster (with presence from all participating users) Crowd control 38 Tuesday, March 3, 2009
  • 178. Multi-User Chat Conversation with multiple users Shared roster (with presence from all participating users) Crowd control Privacy 38 Tuesday, March 3, 2009
  • 179. Multi-User Chat Conversation with multiple users Shared roster (with presence from all participating users) Crowd control Privacy Configurable 38 Tuesday, March 3, 2009
  • 180. Multi-User Chat Configuration 39 Tuesday, March 3, 2009
  • 181. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • 182. PubSub: Polling vs PubSub Polling PubSub Poll HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • 183. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service Result 40 Tuesday, March 3, 2009
  • 184. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • 185. PubSub: Polling vs PubSub Polling PubSub Poll HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • 186. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service No Result 40 Tuesday, March 3, 2009
  • 187. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • 188. PubSub: Polling vs PubSub Polling PubSub Poll HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • 189. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service Result 40 Tuesday, March 3, 2009
  • 190. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • 191. PubSub: Polling vs PubSub Polling PubSub Subscribe HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • 192. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • 193. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service Publish 40 Tuesday, March 3, 2009
  • 194. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
  • 195. PubSub 41 Tuesday, March 3, 2009
  • 196. PubSub Protocol to subscribe and publish any kind of information 41 Tuesday, March 3, 2009
  • 197. PubSub Protocol to subscribe and publish any kind of information Avoids needless polling for new information 41 Tuesday, March 3, 2009
  • 198. PubSub Protocol to subscribe and publish any kind of information Avoids needless polling for new information Doesn’t scale with the number of users / requests 41 Tuesday, March 3, 2009
  • 199. PubSub Protocol to subscribe and publish any kind of information Avoids needless polling for new information Doesn’t scale with the number of users / requests Extensible: Payload can be any type 41 Tuesday, March 3, 2009
  • 200. PubSub Protocol to subscribe and publish any kind of information Avoids needless polling for new information Doesn’t scale with the number of users / requests Extensible: Payload can be any type Configurable 41 Tuesday, March 3, 2009
  • 201. PubSub: Subscribing <iq from=quot;alice@wonderland.lit/rabbitholequot; id=quot;gh921nx3quot; to=quot;notify.wonderland.litquot; type=quot;setquot;> <pubsub xmlns=quot;http://jabber.org/protocol/pubsubquot;> <subscribe node=quot;queenly_proclamationsquot; jid=quot;alice@wonderland.litquot;/> </pubsub> </iq> 42 Tuesday, March 3, 2009
  • 202. PubSub: Publishing events <iq from=quot;queen@wonderland.lit/croquetlawnquot; id=quot;ma019r58quot; to=quot;notify.wonderland.litquot; type=quot;setquot;> <pubsub xmlns=quot;http://jabber.org/protocol/pubsubquot;> <publish node=quot;queenly_proclamationsquot;> <item> <entry xmlns=quot;http://www.w3.org/2005/Atomquot;> <title>A new thought</title> <summary>Off with their heads!</summary> <link rel=quot;alternatequot; type=quot;text/htmlquot; href=quot;http://wonderland.lit/1865/quot;/> <id>tag:wonderland.lit,1865:entry-42</id> <published>1865-12-13T18:30:02Z</published> <updated>1865-12-13T18:30:02Z</updated> </entry> </item> </publish> </pubsub> </iq> 43 Tuesday, March 3, 2009
  • 203. PubSub: Receiving events <message from=quot;notify.wonderland.litquot; to=quot;alice@wonderland.litquot;> <body>A new thought: off with their heads!</body> <event xmlns=quot;http://jabber.org/protocol/pubsub#eventquot;> <items node=quot;queenly_proclamationsquot; id=quot;bl38pahu98hquot;> <item id=quot;zi2ba967quot;> <entry xmlns=quot;http://www.w3.org/2005/Atomquot;> <title>A new thought</title> <summary>Off with their heads!</summary> <link rel=quot;alternatequot; type=quot;text/htmlquot; h ref=quot;http://wonderland.lit/1865/quot;/> <id>tag:wonderland.lit,1865:entry-42</id> <published>1865-12-13T18:30:02Z</published> <updated>1865-12-13T18:30:02Z</updated> </entry> </item> </items> </event> </message> 44 Tuesday, March 3, 2009
  • 204. Extended Presence 45 Tuesday, March 3, 2009
  • 205. Extended Presence Publish extra information about yourself 45 Tuesday, March 3, 2009
  • 206. Extended Presence Publish extra information about yourself What music are you currently listening to? 45 Tuesday, March 3, 2009
  • 207. Extended Presence Publish extra information about yourself What music are you currently listening to? Where are you right now? 45 Tuesday, March 3, 2009
  • 208. Extended Presence Publish extra information about yourself What music are you currently listening to? Where are you right now? What are you doing? 45 Tuesday, March 3, 2009
  • 209. Extended Presence Publish extra information about yourself What music are you currently listening to? Where are you right now? What are you doing? Used to be added to regular presence 45 Tuesday, March 3, 2009
  • 210. Extended Presence Publish extra information about yourself What music are you currently listening to? Where are you right now? What are you doing? Used to be added to regular presence Doesn’t scale 45 Tuesday, March 3, 2009
  • 211. Extended Presence Publish extra information about yourself What music are you currently listening to? Where are you right now? What are you doing? Used to be added to regular presence Doesn’t scale ‘Spams’ people with unwanted information 45 Tuesday, March 3, 2009
  • 212. Extended Presence Publish extra information about yourself What music are you currently listening to? Where are you right now? What are you doing? Used to be added to regular presence Doesn’t scale ‘Spams’ people with unwanted information Implemented on top of PubSub 45 Tuesday, March 3, 2009
  • 213. Extended Presence 46 Tuesday, March 3, 2009
  • 214. Extended presence 47 Tuesday, March 3, 2009
  • 215. Jingle 48 Tuesday, March 3, 2009
  • 216. Jingle Voice, Video, Multimedia, P2P 48 Tuesday, March 3, 2009
  • 217. Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams 48 Tuesday, March 3, 2009
  • 218. Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams Use XMPP (Jingle) to set up a direct connection between points 48 Tuesday, March 3, 2009
  • 219. Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams Use XMPP (Jingle) to set up a direct connection between points Negotiate what (Audio/Video) and how (UDP, TCP) you are going to send it 48 Tuesday, March 3, 2009
  • 220. Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams Use XMPP (Jingle) to set up a direct connection between points Negotiate what (Audio/Video) and how (UDP, TCP) you are going to send it Use streaming protocols (RTP,...) to stream the data over the negotiated direct connection 48 Tuesday, March 3, 2009
  • 221. Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams Use XMPP (Jingle) to set up a direct connection between points Negotiate what (Audio/Video) and how (UDP, TCP) you are going to send it Use streaming protocols (RTP,...) to stream the data over the negotiated direct connection (Renegotiation during data session) 48 Tuesday, March 3, 2009
  • 222. Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams Use XMPP (Jingle) to set up a direct connection between points Negotiate what (Audio/Video) and how (UDP, TCP) you are going to send it Use streaming protocols (RTP,...) to stream the data over the negotiated direct connection (Renegotiation during data session) NAT traversal using standard technologies 48 Tuesday, March 3, 2009
  • 223. Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams Use XMPP (Jingle) to set up a direct connection between points Negotiate what (Audio/Video) and how (UDP, TCP) you are going to send it Use streaming protocols (RTP,...) to stream the data over the negotiated direct connection (Renegotiation during data session) NAT traversal using standard technologies TURN, STUN, ICE 48 Tuesday, March 3, 2009
  • 224. File Transfer 49 Tuesday, March 3, 2009
  • 225. File Transfer Various ways of transferring files 49 Tuesday, March 3, 2009
  • 226. File Transfer Various ways of transferring files Tiny pieces of data are sent in one stanza 49 Tuesday, March 3, 2009
  • 227. File Transfer Various ways of transferring files Tiny pieces of data are sent in one stanza Small pieces of data are sent in a set of consequent <iq/> stanzas 49 Tuesday, March 3, 2009
  • 228. File Transfer Various ways of transferring files Tiny pieces of data are sent in one stanza Small pieces of data are sent in a set of consequent <iq/> stanzas Larger pieces of data are sent out of band 49 Tuesday, March 3, 2009
  • 229. File Transfer Various ways of transferring files Tiny pieces of data are sent in one stanza Small pieces of data are sent in a set of consequent <iq/> stanzas Larger pieces of data are sent out of band Using SOCKS5 49 Tuesday, March 3, 2009
  • 230. File Transfer Various ways of transferring files Tiny pieces of data are sent in one stanza Small pieces of data are sent in a set of consequent <iq/> stanzas Larger pieces of data are sent out of band Using SOCKS5 Using older Jingle-like protocol 49 Tuesday, March 3, 2009
  • 231. File Transfer Various ways of transferring files Tiny pieces of data are sent in one stanza Small pieces of data are sent in a set of consequent <iq/> stanzas Larger pieces of data are sent out of band Using SOCKS5 Using older Jingle-like protocol Being extended to use Jingle 49 Tuesday, March 3, 2009
  • 232. BOSH 50 Tuesday, March 3, 2009
  • 233. BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up 50 Tuesday, March 3, 2009
  • 234. BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient 50 Tuesday, March 3, 2009
  • 235. BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient Long connections drain batteries on mobile phones 50 Tuesday, March 3, 2009
  • 236. BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient Long connections drain batteries on mobile phones Web clients cannot keep state (open connections) 50 Tuesday, March 3, 2009
  • 237. BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient Long connections drain batteries on mobile phones Web clients cannot keep state (open connections) Bad network connectivity 50 Tuesday, March 3, 2009
  • 238. BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient Long connections drain batteries on mobile phones Web clients cannot keep state (open connections) Bad network connectivity Bidirectional streams Over Synchronous HTTP 50 Tuesday, March 3, 2009
  • 239. BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient Long connections drain batteries on mobile phones Web clients cannot keep state (open connections) Bad network connectivity Bidirectional streams Over Synchronous HTTP XMPP over HTTP 50 Tuesday, March 3, 2009
  • 240. BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient Long connections drain batteries on mobile phones Web clients cannot keep state (open connections) Bad network connectivity Bidirectional streams Over Synchronous HTTP XMPP over HTTP Cunning mechanism of not having to poll for new messages 50 Tuesday, March 3, 2009
  • 241. BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient Long connections drain batteries on mobile phones Web clients cannot keep state (open connections) Bad network connectivity Bidirectional streams Over Synchronous HTTP XMPP over HTTP Cunning mechanism of not having to poll for new messages Piggyback incoming messages on HTTP response 50 Tuesday, March 3, 2009
  • 242. BOSH POST /webclient HTTP/1.1 Host: bosh.wonderland.lit Content-Type: text/xml; charset=utf-8 Content-Length: 205 <body rid=quot;90029205quot; sid=quot;3m1ts1htd1squot; xmlns=quot;http://jabber.org/protocol/httpbindquot;> <message to=quot;sister@realworld.litquot; xmlns=quot;jabber:clientquot;> <body>Help, I fell down the rabbit hole!</body> </message> </body> 51 Tuesday, March 3, 2009
  • 243. Serverless Messaging 52 Tuesday, March 3, 2009
  • 244. Serverless Messaging Sometimes, a server is not available 52 Tuesday, March 3, 2009
  • 245. Serverless Messaging Sometimes, a server is not available Remote location without internet 52 Tuesday, March 3, 2009
  • 246. Serverless Messaging Sometimes, a server is not available Remote location without internet Conference location with many unknown people you want to communicate wit 52 Tuesday, March 3, 2009
  • 247. Serverless Messaging Sometimes, a server is not available Remote location without internet Conference location with many unknown people you want to communicate wit Serverless messaging 52 Tuesday, March 3, 2009
  • 248. Serverless Messaging Sometimes, a server is not available Remote location without internet Conference location with many unknown people you want to communicate wit Serverless messaging Uses zero-configuration (Apple) to discover entities on the local network 52 Tuesday, March 3, 2009
  • 249. Serverless Messaging Sometimes, a server is not available Remote location without internet Conference location with many unknown people you want to communicate wit Serverless messaging Uses zero-configuration (Apple) to discover entities on the local network mDNS, DNS-SD 52 Tuesday, March 3, 2009
  • 250. Serverless Messaging Sometimes, a server is not available Remote location without internet Conference location with many unknown people you want to communicate wit Serverless messaging Uses zero-configuration (Apple) to discover entities on the local network mDNS, DNS-SD Open connection directly to other connection, and send XMPP over that connection 52 Tuesday, March 3, 2009
  • 251. Serverless Messaging Sometimes, a server is not available Remote location without internet Conference location with many unknown people you want to communicate wit Serverless messaging Uses zero-configuration (Apple) to discover entities on the local network mDNS, DNS-SD Open connection directly to other connection, and send XMPP over that connection iChat’s Rendez-vous/Bonjour 52 Tuesday, March 3, 2009
  • 252. State of the bulb Tuesday, March 3, 2009
  • 253. What is the XSF working on? 54 Tuesday, March 3, 2009
  • 254. What is the XSF working on? E2E security 54 Tuesday, March 3, 2009
  • 255. What is the XSF working on? E2E security Whiteboarding 54 Tuesday, March 3, 2009
  • 256. What is the XSF working on? E2E security Whiteboarding File sharing / personal media networks 54 Tuesday, March 3, 2009
  • 257. What is the XSF working on? E2E security Whiteboarding File sharing / personal media networks World domination 54 Tuesday, March 3, 2009
  • 259. Join the conversation http://xmpp.org/ mailto:jdev@jabber.org xmpp:jdev@conference.jabber.org [mailto:|xmpp:]stpeter@jabber.org [mailto:|xmpp:]remko@el-tramo.be Jabber/XMPP booth @ FOSDEM XMPP Summit on Monday 56 Tuesday, March 3, 2009
  • 260. Conclusion 57 Tuesday, March 3, 2009
  • 261. Conclusion The real-time Internet is coming 57 Tuesday, March 3, 2009
  • 262. Conclusion The real-time Internet is coming Build competitive advantage using open technologies 57 Tuesday, March 3, 2009
  • 263. Conclusion The real-time Internet is coming Build competitive advantage using open technologies What problems can you solve with XMPP? 57 Tuesday, March 3, 2009
  • 264. Conclusion The real-time Internet is coming Build competitive advantage using open technologies What problems can you solve with XMPP? Join the conversation 57 Tuesday, March 3, 2009
  • 265. Conclusion The real-time Internet is coming Build competitive advantage using open technologies What problems can you solve with XMPP? Join the conversation Happy Jabbering! 57 Tuesday, March 3, 2009
  • 266. Conclusion The real-time Internet is coming Build competitive advantage using open technologies What problems can you solve with XMPP? Join the conversation Happy Jabbering! More info inside 57 Tuesday, March 3, 2009

Notes de l'éditeur