Your SlideShare is downloading. ×
XMPP 101

     Remko Tronçon
     Peter Saint-Andre




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


Tuesday, March 3, 2009
About Us




                         4


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




                                                   ...
About Us
         Peter: Documentation guy and specification author
         Remko: Developer for Psi client and other proj...
About Us
         Peter: Documentation guy and specification author
         Remko: Developer for Psi client and other proj...
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


Tu...
About You

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




                         6


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




                                                   ...
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber




                                  ...
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system

...
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
 ...
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
 ...
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
 ...
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
 ...
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
 ...
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
 ...
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
 ...
What is XMPP?
          eXtensible Messaging and Presence Protocol
          Jabber
          Real time messaging system
 ...
What can you do with XMPP?




                                  7


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




                                             7

...
What can you do with XMPP?
                     Real-time Social Networking




                                          ...
What can you do with XMPP?
                         Gaming




                                  9


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




                                         10


Tuesda...
What can you do with XMPP?
                         Mobile apps / Geolocation




                                        ...
What can you do with XMPP?



                   <insert your idea here>




                                             ...
XMPP ...




                         13


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




                                 ...
XMPP ...
         ... is an open standard (RFC 3920 + 3921, XSF
         Extensions)
         ... is decentralized (federa...
XMPP ...
         ... is an open standard (RFC 3920 + 3921, XSF
         Extensions)
         ... is decentralized (federa...
XMPP ...
         ... is an open standard (RFC 3920 + 3921, XSF
         Extensions)
         ... is decentralized (federa...
XMPP ...
         ... is an open standard (RFC 3920 + 3921, XSF
         Extensions)
         ... is decentralized (federa...
What does XMPP provide?




                               14


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




                                               ...
What does XMPP provide?
         Channel encryption and authentication
         Presence and contact lists




           ...
What does XMPP provide?
         Channel encryption and authentication
         Presence and contact lists
         One-to...
What does XMPP provide?
         Channel encryption and authentication
         Presence and contact lists
         One-to...
What does XMPP provide?
         Channel encryption and authentication
         Presence and contact lists
         One-to...
What does XMPP provide?
         Channel encryption and authentication
         Presence and contact lists
         One-to...
What does XMPP provide?
         Channel encryption and authentication
         Presence and contact lists
         One-to...
What does XMPP provide?
         Channel encryption and authentication
         Presence and contact lists
         One-to...
History




                         15


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




                                                       15...
History
         Invented by Jeremie Miller as Jabber (1998)
         First server + clients + libraries (1999-2000)




 ...
History
         Invented by Jeremie Miller as Jabber (1998)
         First server + clients + libraries (1999-2000)
     ...
History
         Invented by Jeremie Miller as Jabber (1998)
         First server + clients + libraries (1999-2000)
     ...
History
         Invented by Jeremie Miller as Jabber (1998)
         First server + clients + libraries (1999-2000)
     ...
History
         Invented by Jeremie Miller as Jabber (1998)
         First server + clients + libraries (1999-2000)
     ...
History
         Invented by Jeremie Miller as Jabber (1998)
         First server + clients + libraries (1999-2000)
     ...
Basics


Tuesday, March 3, 2009
Architecture
         Web architecture




                            17


Tuesday, March 3, 2009
Architecture
         Web architecture




                            Browser



                                      17...
Architecture
         Web architecture


                         wonderland.lit             images.realworld.lit
        ...
Architecture
         Web architecture


                         wonderland.lit             images.realworld.lit
        ...
Architecture
         Web architecture


                         wonderland.lit             images.realworld.lit
        ...
Architecture
         Web architecture


                         wonderland.lit             images.realworld.lit
        ...
Architecture
         Web architecture


                         wonderland.lit             images.realworld.lit
        ...
Architecture
         E-Mail architecture




                               18


Tuesday, March 3, 2009
Architecture
         E-Mail architecture




         E-Mail client             E-Mail client
    alice@wonderland.lit   ...
Architecture
         E-Mail architecture

         wonderland.lit        rabbithole.lit      realworld.lit
            se...
Architecture
         E-Mail architecture

         wonderland.lit        rabbithole.lit      realworld.lit
            se...
Architecture
         E-Mail architecture

         wonderland.lit        rabbithole.lit      realworld.lit
            se...
Architecture
         E-Mail architecture

         wonderland.lit        rabbithole.lit      realworld.lit
            se...
Architecture
         E-Mail architecture

         wonderland.lit        rabbithole.lit      realworld.lit
            se...
Architecture
         XMPP Architecture

                                             realworld.lit
                      ...
Architecture
         XMPP Architecture

                                             realworld.lit
                      ...
Architecture
         XMPP Architecture

                                             realworld.lit
                      ...
Architecture
         XMPP Architecture

                                             realworld.lit
                      ...
Architecture




                         20


Tuesday, March 3, 2009
Architecture
         Client-server




                         20


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




                      ...
Architecture
         Client-server
             Client developers can focus on user experience
             Server develo...
Architecture
         Client-server
             Client developers can focus on user experience
             Server develo...
Architecture
         Client-server
             Client developers can focus on user experience
             Server develo...
Architecture
         Client-server
             Client developers can focus on user experience
             Server develo...
Architecture
         Client-server
             Client developers can focus on user experience
             Server develo...
Architecture
         Client-server
             Client developers can focus on user experience
             Server develo...
Addresses

                         Jabber ID (JID)




                                           21


Tuesday, March 3, ...
Addresses

                         Jabber ID (JID)
                             Domain
                          wonderla...
Addresses

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

                         Jabber ID (JID)
               User           Domain
             alice@ wonderland.li...
Addresses

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

                         Jabber ID (JID)
               User          Domain   Resource
             alice@ won...
Addresses

                         Jabber ID (JID)
               User          Domain       Resource
             alice@...
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:rost...
Streaming XML
 <stream:stream>
       <presence/>
       <iq type=quot;getquot;>
         <query xmlns=quot;jabber:iq:rost...
Streaming XML
 <stream:stream>
       <presence/>
       <iq type=quot;getquot;>
         <query xmlns=quot;jabber:iq:rost...
Streaming XML
 <stream:stream>
       <presence/>
       <iq type=quot;getquot;>
         <query xmlns=quot;jabber:iq:rost...
Streaming XML
 <stream:stream>
       <presence/>
       <iq type=quot;getquot;>
         <query xmlns=quot;jabber:iq:rost...
Streaming XML
 <stream:stream>
       <presence/>
       <iq type=quot;getquot;>
         <query xmlns=quot;jabber:iq:rost...
Communication Primitives

                         Stanzas:




                                    23


Tuesday, March 3,...
Communication Primitives

                         Stanzas:
                         <message/>




                      ...
Communication Primitives

                          Stanzas:
                         <message/>

                        ...
Communication Primitives

                          Stanzas:
                         <message/>

                        ...
Message Stanzas




                         24


Tuesday, March 3, 2009
Message Stanzas
          <message from=quot;madhatter@wonderland.lit/fooquot;
                   to=quot;alice@wonderland...
Message Stanzas
          <message from=quot;madhatter@wonderland.lit/fooquot;
                   to=quot;alice@wonderland...
Message Stanzas
          <message from=quot;madhatter@wonderland.lit/fooquot;
                   to=quot;alice@wonderland...
Message Stanzas
          <message from=quot;madhatter@wonderland.lit/fooquot;
                   to=quot;alice@wonderland...
Presence Stanzas




                         25


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




                         26


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



                         Sender   Receiver




                                             27


Tuesday, Ma...
IQ Stanzas



                                  IQ-get
                         Sender            Receiver




           ...
IQ Stanzas



                         Sender               Receiver
                                  IQ-result




     ...
IQ Stanzas



                         Sender   Receiver




                                             27


Tuesday, Ma...
IQ Stanzas



                                  IQ-set
                         Sender            Receiver




           ...
IQ Stanzas



                         Sender               Receiver
                                  IQ-result




     ...
IQ Stanzas



                         Sender   Receiver




                                             27


Tuesday, Ma...
IQ Stanzas




                         28


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




                         29


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




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




                         30


Tuesday, March 3, 2009
Asynchronicity
         Web




                         30


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




                                      30


Tuesday, Ma...
Asynchronicity
         Web
             Send request to server
             Wait for response




                       ...
Asynchronicity
         Web
             Send request to server
             Wait for response
             Short-lived co...
Asynchronicity
         Web
             Send request to server
             Wait for response
             Short-lived co...
Asynchronicity
         Web
             Send request to server
             Wait for response
             Short-lived co...
Asynchronicity
         Web
             Send request to server
             Wait for response
             Short-lived co...
Asynchronicity
         Web
             Send request to server
             Wait for response
             Short-lived co...
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
...
Echo bot
         Bots
             Unmanned clients
             Connect to an XMPP server, and wait for commands / send
...
Echo bot
         Bots
             Unmanned clients
             Connect to an XMPP server, and wait for commands / send
...
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...
Writing the Echo Bot
         Select a language to work in
             e.g. Python




                                  ...
Writing the Echo Bot
         Select a language to work in
             e.g. Python
         Select an XMPP library to do ...
Writing the Echo Bot
         Select a language to work in
             e.g. Python
         Select an XMPP library to do ...
Writing the Echo Bot
         Select a language to work in
             e.g. Python
         Select an XMPP library to do ...
SleekXMPP Python Echo Bot
    class EchoBot :
      def __init__(self, jid, password) :
        self.xmpp = sleekxmpp.Clie...
SleekXMPP Python Echo Bot
    class EchoBot :
      def __init__(self, jid, password) :
        self.xmpp = sleekxmpp.Clie...
SleekXMPP Python Echo Bot
    class EchoBot :
      def __init__(self, jid, password) :
        self.xmpp = sleekxmpp.Clie...
SleekXMPP Python Echo Bot
    class EchoBot :
      def __init__(self, jid, password) :
        self.xmpp = sleekxmpp.Clie...
SleekXMPP Python Echo Bot
    class EchoBot :
      def __init__(self, jid, password) :
        self.xmpp = sleekxmpp.Clie...
SleekXMPP Python Echo Bot
    class EchoBot :
      def __init__(self, jid, password) :
        self.xmpp = sleekxmpp.Clie...
SleekXMPP Python Echo Bot
    class EchoBot :
      def __init__(self, jid, password) :
        self.xmpp = sleekxmpp.Clie...
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, Ma...
Multi-User Chat
         Conversation with multiple users
         Shared roster (with presence from all participating
   ...
Multi-User Chat
         Conversation with multiple users
         Shared roster (with presence from all participating
   ...
Multi-User Chat
         Conversation with multiple users
         Shared roster (with presence from all participating
   ...
Multi-User Chat
         Conversation with multiple users
         Shared roster (with presence from all participating
   ...
Multi-User Chat Configuration




                                    39


Tuesday, March 3, 2009
PubSub: Polling vs PubSub


        Polling                     PubSub

    HTTP client                    XMPP client
   ...
PubSub: Polling vs PubSub


        Polling                            PubSub
                         Poll
    HTTP clien...
PubSub: Polling vs PubSub


        Polling                              PubSub

    HTTP client                          ...
PubSub: Polling vs PubSub


        Polling                     PubSub

    HTTP client                    XMPP client
   ...
PubSub: Polling vs PubSub


        Polling                            PubSub
                         Poll
    HTTP clien...
PubSub: Polling vs PubSub


        Polling                                 PubSub

    HTTP client                       ...
PubSub: Polling vs PubSub


        Polling                     PubSub

    HTTP client                    XMPP client
   ...
PubSub: Polling vs PubSub


        Polling                            PubSub
                         Poll
    HTTP clien...
PubSub: Polling vs PubSub


        Polling                              PubSub

    HTTP client                          ...
PubSub: Polling vs PubSub


        Polling                     PubSub

    HTTP client                    XMPP client
   ...
PubSub: Polling vs PubSub


        Polling                                 PubSub
                                   Subs...
PubSub: Polling vs PubSub


        Polling                     PubSub

    HTTP client                    XMPP client
   ...
PubSub: Polling vs PubSub


        Polling                               PubSub

    HTTP client                         ...
PubSub: Polling vs PubSub


        Polling                     PubSub

    HTTP client                    XMPP client
   ...
PubSub




                         41


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




                                   ...
PubSub
         Protocol to subscribe and publish any kind of
         information
         Avoids needless polling for ne...
PubSub
         Protocol to subscribe and publish any kind of
         information
         Avoids needless polling for ne...
PubSub
         Protocol to subscribe and publish any kind of
         information
         Avoids needless polling for ne...
PubSub
         Protocol to subscribe and publish any kind of
         information
         Avoids needless polling for ne...
PubSub: Subscribing

   <iq from=quot;alice@wonderland.lit/rabbitholequot;
       id=quot;gh921nx3quot;
       to=quot;not...
PubSub: Publishing events
     <iq from=quot;queen@wonderland.lit/croquetlawnquot;
         id=quot;ma019r58quot;
        ...
PubSub: Receiving events
     <message from=quot;notify.wonderland.litquot; to=quot;alice@wonderland.litquot;>
       <bod...
Extended Presence




                         45


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




                                                  ...
Extended Presence
         Publish extra information about yourself
             What music are you currently listening to...
Extended Presence
         Publish extra information about yourself
             What music are you currently listening to...
Extended Presence
         Publish extra information about yourself
             What music are you currently listening to...
Extended Presence
         Publish extra information about yourself
             What music are you currently listening to...
Extended Presence
         Publish extra information about yourself
             What music are you currently listening to...
Extended Presence
         Publish extra information about yourself
             What music are you currently listening to...
Extended Presence
         Publish extra information about yourself
             What music are you currently listening to...
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




                    ...
Jingle
         Voice, Video, Multimedia, P2P
         XMPP is not optimized to send data streams
         Use XMPP (Jingl...
Jingle
         Voice, Video, Multimedia, P2P
         XMPP is not optimized to send data streams
         Use XMPP (Jingl...
Jingle
         Voice, Video, Multimedia, P2P
         XMPP is not optimized to send data streams
         Use XMPP (Jingl...
Jingle
         Voice, Video, Multimedia, P2P
         XMPP is not optimized to send data streams
         Use XMPP (Jingl...
Jingle
         Voice, Video, Multimedia, P2P
         XMPP is not optimized to send data streams
         Use XMPP (Jingl...
Jingle
         Voice, Video, Multimedia, P2P
         XMPP is not optimized to send data streams
         Use XMPP (Jingl...
File Transfer




                         49


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




                                          49


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




           ...
File Transfer
      Various ways of transferring files
          Tiny pieces of data are sent in one stanza
          Small...
File Transfer
      Various ways of transferring files
          Tiny pieces of data are sent in one stanza
          Small...
File Transfer
      Various ways of transferring files
          Tiny pieces of data are sent in one stanza
          Small...
File Transfer
      Various ways of transferring files
          Tiny pieces of data are sent in one stanza
          Small...
File Transfer
      Various ways of transferring files
          Tiny pieces of data are sent in one stanza
          Small...
BOSH




                         50


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




                             ...
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient


...
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient
  ...
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient
  ...
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient
  ...
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient
  ...
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient
  ...
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient
  ...
BOSH
         Regular XMPP opens one long-lived TCP
         connection, and keeps it up
         Not always convenient
  ...
BOSH

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




                            52


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




                                                52
...
Serverless Messaging
         Sometimes, a server is not available
             Remote location without internet




     ...
Serverless Messaging
         Sometimes, a server is not available
             Remote location without internet
         ...
Serverless Messaging
         Sometimes, a server is not available
             Remote location without internet
         ...
Serverless Messaging
         Sometimes, a server is not available
             Remote location without internet
         ...
Serverless Messaging
         Sometimes, a server is not available
             Remote location without internet
         ...
Serverless Messaging
         Sometimes, a server is not available
             Remote location without internet
         ...
Serverless Messaging
         Sometimes, a server is not available
             Remote location without internet
         ...
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


Tuesd...
What is the XSF working on?
         E2E security
         Whiteboarding
         File sharing / personal media networks

...
What is the XSF working on?
         E2E security
         Whiteboarding
         File sharing / personal media networks
 ...
Conclusion


Tuesday, March 3, 2009
Join the conversation
         http://xmpp.org/
         mailto:jdev@jabber.org
         xmpp:jdev@conference.jabber.org
 ...
Conclusion




                         57


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




                                            57


Tuesday, March 3...
Conclusion
         The real-time Internet is coming
         Build competitive advantage using open
         technologies...
Conclusion
         The real-time Internet is coming
         Build competitive advantage using open
         technologies...
Conclusion
         The real-time Internet is coming
         Build competitive advantage using open
         technologies...
Conclusion
         The real-time Internet is coming
         Build competitive advantage using open
         technologies...
Conclusion
         The real-time Internet is coming
         Build competitive advantage using open
         technologies...
Upcoming SlideShare
Loading in...5
×

XMPP 101

12,344

Published on

A fast-paced introduction to XMPP.

Published in: Technology
2 Comments
84 Likes
Statistics
Notes
No Downloads
Views
Total Views
12,344
On Slideshare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
1
Comments
2
Likes
84
Embeds 0
No embeds

No notes for slide




































































































































































































































































































































































































































































































































  • Transcript of "XMPP 101"

    1. 1. XMPP 101 Remko Tronçon Peter Saint-Andre Tuesday, March 3, 2009
    2. 2. Overview Introduction XMPP Basics Example code Extensions State of the bulb Conclusion 2 Tuesday, March 3, 2009
    3. 3. Introduction Tuesday, March 3, 2009
    4. 4. About Us 4 Tuesday, March 3, 2009
    5. 5. About Us Peter: Documentation guy and specification author 4 Tuesday, March 3, 2009
    6. 6. About Us Peter: Documentation guy and specification author Remko: Developer for Psi client and other projects 4 Tuesday, March 3, 2009
    7. 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. 8. About You 5 Tuesday, March 3, 2009
    9. 9. About You Why are you here? 5 Tuesday, March 3, 2009
    10. 10. About You Why are you here? What do you want to build? 5 Tuesday, March 3, 2009
    11. 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. 12. What is XMPP? 6 Tuesday, March 3, 2009
    13. 13. What is XMPP? eXtensible Messaging and Presence Protocol 6 Tuesday, March 3, 2009
    14. 14. What is XMPP? eXtensible Messaging and Presence Protocol Jabber 6 Tuesday, March 3, 2009
    15. 15. What is XMPP? eXtensible Messaging and Presence Protocol Jabber Real time messaging system 6 Tuesday, March 3, 2009
    16. 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. 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. 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. 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. 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. 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. 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. 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. 24. What can you do with XMPP? 7 Tuesday, March 3, 2009
    25. 25. What can you do with XMPP? Instant Messaging 7 Tuesday, March 3, 2009
    26. 26. What can you do with XMPP? Real-time Social Networking 8 Tuesday, March 3, 2009
    27. 27. What can you do with XMPP? Gaming 9 Tuesday, March 3, 2009
    28. 28. What can you do with XMPP? Voice & Video 10 Tuesday, March 3, 2009
    29. 29. What can you do with XMPP? Mobile apps / Geolocation 11 Tuesday, March 3, 2009
    30. 30. What can you do with XMPP? <insert your idea here> 12 Tuesday, March 3, 2009
    31. 31. XMPP ... 13 Tuesday, March 3, 2009
    32. 32. XMPP ... ... is an open standard (RFC 3920 + 3921, XSF Extensions) 13 Tuesday, March 3, 2009
    33. 33. XMPP ... ... is an open standard (RFC 3920 + 3921, XSF Extensions) ... is decentralized (federated) 13 Tuesday, March 3, 2009
    34. 34. XMPP ... ... is an open standard (RFC 3920 + 3921, XSF Extensions) ... is decentralized (federated) ... has strong security (TLS) 13 Tuesday, March 3, 2009
    35. 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. 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. 37. What does XMPP provide? 14 Tuesday, March 3, 2009
    38. 38. What does XMPP provide? Channel encryption and authentication 14 Tuesday, March 3, 2009
    39. 39. What does XMPP provide? Channel encryption and authentication Presence and contact lists 14 Tuesday, March 3, 2009
    40. 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. 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. 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. 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. 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. 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. 46. History 15 Tuesday, March 3, 2009
    47. 47. History Invented by Jeremie Miller as Jabber (1998) 15 Tuesday, March 3, 2009
    48. 48. History Invented by Jeremie Miller as Jabber (1998) First server + clients + libraries (1999-2000) 15 Tuesday, March 3, 2009
    49. 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. 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. 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. 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. 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
    54. 54. Basics Tuesday, March 3, 2009
    55. 55. Architecture Web architecture 17 Tuesday, March 3, 2009
    56. 56. Architecture Web architecture Browser 17 Tuesday, March 3, 2009
    57. 57. Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
    58. 58. Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
    59. 59. Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
    60. 60. Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
    61. 61. Architecture Web architecture wonderland.lit images.realworld.lit Web Server Web Server Browser 17 Tuesday, March 3, 2009
    62. 62. Architecture E-Mail architecture 18 Tuesday, March 3, 2009
    63. 63. Architecture E-Mail architecture E-Mail client E-Mail client alice@wonderland.lit sister@realworld.lit 18 Tuesday, March 3, 2009
    64. 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. 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. 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. 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. 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. 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. 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. 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. 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. 73. Architecture 20 Tuesday, March 3, 2009
    74. 74. Architecture Client-server 20 Tuesday, March 3, 2009
    75. 75. Architecture Client-server Client developers can focus on user experience 20 Tuesday, March 3, 2009
    76. 76. Architecture Client-server Client developers can focus on user experience Server developers can focus on relaibility & scalability 20 Tuesday, March 3, 2009
    77. 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. 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. 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. 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. 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. 82. Addresses Jabber ID (JID) 21 Tuesday, March 3, 2009
    83. 83. Addresses Jabber ID (JID) Domain wonderland.lit 21 Tuesday, March 3, 2009
    84. 84. Addresses Jabber ID (JID) User Domain alice@ wonderland.lit 21 Tuesday, March 3, 2009
    85. 85. Addresses Jabber ID (JID) User Domain alice@ wonderland.lit Bare JID 21 Tuesday, March 3, 2009
    86. 86. Addresses Jabber ID (JID) User Domain alice@ wonderland.lit 21 Tuesday, March 3, 2009
    87. 87. Addresses Jabber ID (JID) User Domain Resource alice@ wonderland.lit /TeaParty 21 Tuesday, March 3, 2009
    88. 88. Addresses Jabber ID (JID) User Domain Resource alice@ wonderland.lit /TeaParty Full JID 21 Tuesday, March 3, 2009
    89. 89. Streaming XML 22 Tuesday, March 3, 2009
    90. 90. Streaming XML <stream:stream> 22 Tuesday, March 3, 2009
    91. 91. Streaming XML <stream:stream> <presence/> 22 Tuesday, March 3, 2009
    92. 92. Streaming XML <stream:stream> <presence/> <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> 22 Tuesday, March 3, 2009
    93. 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. 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. 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. 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. 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. 98. Communication Primitives Stanzas: 23 Tuesday, March 3, 2009
    99. 99. Communication Primitives Stanzas: <message/> 23 Tuesday, March 3, 2009
    100. 100. Communication Primitives Stanzas: <message/> <presence/> 23 Tuesday, March 3, 2009
    101. 101. Communication Primitives Stanzas: <message/> <presence/> <iq/> 23 Tuesday, March 3, 2009
    102. 102. Message Stanzas 24 Tuesday, March 3, 2009
    103. 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. 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. 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. 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. 107. Presence Stanzas 25 Tuesday, March 3, 2009
    108. 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. 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. 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. 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. 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. 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. 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. 115. IQ Stanzas 26 Tuesday, March 3, 2009
    116. 116. IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> 26 Tuesday, March 3, 2009
    117. 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. 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. 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. 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. 121. IQ Stanzas Sender Receiver 27 Tuesday, March 3, 2009
    122. 122. IQ Stanzas IQ-get Sender Receiver 27 Tuesday, March 3, 2009
    123. 123. IQ Stanzas Sender Receiver IQ-result 27 Tuesday, March 3, 2009
    124. 124. IQ Stanzas Sender Receiver 27 Tuesday, March 3, 2009
    125. 125. IQ Stanzas IQ-set Sender Receiver 27 Tuesday, March 3, 2009
    126. 126. IQ Stanzas Sender Receiver IQ-result 27 Tuesday, March 3, 2009
    127. 127. IQ Stanzas Sender Receiver 27 Tuesday, March 3, 2009
    128. 128. IQ Stanzas 28 Tuesday, March 3, 2009
    129. 129. IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> 28 Tuesday, March 3, 2009
    130. 130. IQ Stanzas <iq type=quot;getquot;> <query xmlns=quot;jabber:iq:rosterquot;/> </iq> Types: 28 Tuesday, March 3, 2009
    131. 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. 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. 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. 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. 135. Extensibility 29 Tuesday, March 3, 2009
    136. 136. Extensibility Any XML child element can be used as a payload 29 Tuesday, March 3, 2009
    137. 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. 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. 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. 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. 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. 142. Asynchronicity 30 Tuesday, March 3, 2009
    143. 143. Asynchronicity Web 30 Tuesday, March 3, 2009
    144. 144. Asynchronicity Web Send request to server 30 Tuesday, March 3, 2009
    145. 145. Asynchronicity Web Send request to server Wait for response 30 Tuesday, March 3, 2009
    146. 146. Asynchronicity Web Send request to server Wait for response Short-lived connections 30 Tuesday, March 3, 2009
    147. 147. Asynchronicity Web Send request to server Wait for response Short-lived connections Jabber 30 Tuesday, March 3, 2009
    148. 148. Asynchronicity Web Send request to server Wait for response Short-lived connections Jabber Long lived connection 30 Tuesday, March 3, 2009
    149. 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. 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
    151. 151. Code Example Tuesday, March 3, 2009
    152. 152. Echo bot 32 Tuesday, March 3, 2009
    153. 153. Echo bot Bots 32 Tuesday, March 3, 2009
    154. 154. Echo bot Bots Unmanned clients 32 Tuesday, March 3, 2009
    155. 155. Echo bot Bots Unmanned clients Connect to an XMPP server, and wait for commands / send events 32 Tuesday, March 3, 2009
    156. 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. 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
    158. 158. Tuesday, March 3, 2009
    159. 159. Writing the Echo Bot 34 Tuesday, March 3, 2009
    160. 160. Writing the Echo Bot Select a language to work in 34 Tuesday, March 3, 2009
    161. 161. Writing the Echo Bot Select a language to work in e.g. Python 34 Tuesday, March 3, 2009
    162. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
    172. 172. Extensions Tuesday, March 3, 2009
    173. 173. Multi-User Chat 37 Tuesday, March 3, 2009
    174. 174. Multi-User Chat 38 Tuesday, March 3, 2009
    175. 175. Multi-User Chat Conversation with multiple users 38 Tuesday, March 3, 2009
    176. 176. Multi-User Chat Conversation with multiple users Shared roster (with presence from all participating users) 38 Tuesday, March 3, 2009
    177. 177. Multi-User Chat Conversation with multiple users Shared roster (with presence from all participating users) Crowd control 38 Tuesday, March 3, 2009
    178. 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. 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. 180. Multi-User Chat Configuration 39 Tuesday, March 3, 2009
    181. 181. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
    182. 182. PubSub: Polling vs PubSub Polling PubSub Poll HTTP client XMPP client Service 40 Tuesday, March 3, 2009
    183. 183. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service Result 40 Tuesday, March 3, 2009
    184. 184. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
    185. 185. PubSub: Polling vs PubSub Polling PubSub Poll HTTP client XMPP client Service 40 Tuesday, March 3, 2009
    186. 186. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service No Result 40 Tuesday, March 3, 2009
    187. 187. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
    188. 188. PubSub: Polling vs PubSub Polling PubSub Poll HTTP client XMPP client Service 40 Tuesday, March 3, 2009
    189. 189. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service Result 40 Tuesday, March 3, 2009
    190. 190. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
    191. 191. PubSub: Polling vs PubSub Polling PubSub Subscribe HTTP client XMPP client Service 40 Tuesday, March 3, 2009
    192. 192. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
    193. 193. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service Publish 40 Tuesday, March 3, 2009
    194. 194. PubSub: Polling vs PubSub Polling PubSub HTTP client XMPP client Service 40 Tuesday, March 3, 2009
    195. 195. PubSub 41 Tuesday, March 3, 2009
    196. 196. PubSub Protocol to subscribe and publish any kind of information 41 Tuesday, March 3, 2009
    197. 197. PubSub Protocol to subscribe and publish any kind of information Avoids needless polling for new information 41 Tuesday, March 3, 2009
    198. 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. 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. 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. 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. 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. 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. 204. Extended Presence 45 Tuesday, March 3, 2009
    205. 205. Extended Presence Publish extra information about yourself 45 Tuesday, March 3, 2009
    206. 206. Extended Presence Publish extra information about yourself What music are you currently listening to? 45 Tuesday, March 3, 2009
    207. 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. 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. 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. 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. 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. 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. 213. Extended Presence 46 Tuesday, March 3, 2009
    214. 214. Extended presence 47 Tuesday, March 3, 2009
    215. 215. Jingle 48 Tuesday, March 3, 2009
    216. 216. Jingle Voice, Video, Multimedia, P2P 48 Tuesday, March 3, 2009
    217. 217. Jingle Voice, Video, Multimedia, P2P XMPP is not optimized to send data streams 48 Tuesday, March 3, 2009
    218. 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. 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. 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. 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. 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. 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. 224. File Transfer 49 Tuesday, March 3, 2009
    225. 225. File Transfer Various ways of transferring files 49 Tuesday, March 3, 2009
    226. 226. File Transfer Various ways of transferring files Tiny pieces of data are sent in one stanza 49 Tuesday, March 3, 2009
    227. 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. 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. 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. 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. 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. 232. BOSH 50 Tuesday, March 3, 2009
    233. 233. BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up 50 Tuesday, March 3, 2009
    234. 234. BOSH Regular XMPP opens one long-lived TCP connection, and keeps it up Not always convenient 50 Tuesday, March 3, 2009
    235. 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. 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. 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. 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. 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. 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. 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. 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. 243. Serverless Messaging 52 Tuesday, March 3, 2009
    244. 244. Serverless Messaging Sometimes, a server is not available 52 Tuesday, March 3, 2009
    245. 245. Serverless Messaging Sometimes, a server is not available Remote location without internet 52 Tuesday, March 3, 2009
    246. 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. 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. 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. 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. 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. 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. 252. State of the bulb Tuesday, March 3, 2009
    253. 253. What is the XSF working on? 54 Tuesday, March 3, 2009
    254. 254. What is the XSF working on? E2E security 54 Tuesday, March 3, 2009
    255. 255. What is the XSF working on? E2E security Whiteboarding 54 Tuesday, March 3, 2009
    256. 256. What is the XSF working on? E2E security Whiteboarding File sharing / personal media networks 54 Tuesday, March 3, 2009
    257. 257. What is the XSF working on? E2E security Whiteboarding File sharing / personal media networks World domination 54 Tuesday, March 3, 2009
    258. 258. Conclusion Tuesday, March 3, 2009
    259. 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. 260. Conclusion 57 Tuesday, March 3, 2009
    261. 261. Conclusion The real-time Internet is coming 57 Tuesday, March 3, 2009
    262. 262. Conclusion The real-time Internet is coming Build competitive advantage using open technologies 57 Tuesday, March 3, 2009
    263. 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. 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. 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. 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

    ×