Generative AI for Technical Writer or Information Developers
XMPP Intro 1101 - 2008
1. XMPP intro E
Extensible Messaging and Presence
Protocol
Steffen Larsen (slarsen@nordija.com)
2. XMPP - what is it?
• Extensible Messaging and Presence
Protocol
• An Open Source Instant Messaging
(IM) system. I would also like to refer
to it as a session protocol.
• Easy integration of extensions
• Widely used and many implementations
of the core system.
3. XMPP clients
• Pidgin (formerly known as gaim, all)
• Adium (based on pidgin lib.,mac)
• GTalk (Google Talk, m$ windoze)
• psi (all)
• gajim (all), etc... MANY!
4. XMPP core
• Going from Jabber (1999) to XMPP
• XMPP foundation, founded 2003. For
standardization.
• RFC 3920, RFC 3921 (define XML
stream, login and architecture)
5. XMPP core
• XMPP is a XML streaming standard
• XMPP defines a <stream/> to make a
stream session.
• TLS (authentication) / SASL (Simple
Authentication and Security Layer)
6. XMPP core
core consists of the following:
• <stream/>
• Addressing standard (JIDs):
user@host.domain/resource. This is
important for the routing/prioritizing.
• stanzas
7. XML Streams
• <stream/> container for XML
elements in a stream.
• <stream/> once in a session, send
many xml elements!
• <stream/> consists of:
• negotiation of TLS and SASL
• stanzas
8. The “layers”
• TCP (your socket!)
• TLS secure layer
• SASL negotiation
• XMPP (send/receive stanzas)
• Third party channel.. (initiated by XMPP, voice
etc)
9. Using the language
• Logging in <stream>, TLS, SASL..
• SASL for negotiating diff.
encryption mechanisms.
• Challenge/Response..
• server binds the client resource
• fetching the buddy list.. <iq get
roster..>
• sending stanzas messages, presence
etc.
10. Language Elements
• XMPP have 3 XML stanzas. (well
structured children under the
<stream/> element):
• <presence/>
• <message/>
• <iq/> (Information, Query: get, set)
15. XMPP Extensions (XEP)
• XMPP defines a set of XEPs
• Definition of an extension (XEP-001).
XEP relies on namespaces.
• XEP-166, XEP-167 (Jingles), XEP-176
important right now
• Feature and service discovery
important. Can also be done in
16. XMPP Platforms
• ejabberd (erlang)
• xfire (uses smack-lib, java based)
• google talk (based on libjingle, c++).
Can connect to the base XMPP
architecture and vice versa. Some
XEPs are NOT the same (voice/video/
ice)!
17. XMPP Libraries
• Libjingle (google, c++, not compliant to
some xmpp extensions)
• Perl:XMPP (perl!, dah!)
• LibIksmeal (C, very unorganized!)
• Smack (Java, JMF!)
• My own!... :-) (core in libpurple, plugin
lib for xep-166,167,176)
18. XMPP in the future?
• Will it become a de-facto
standard? (xmpp is what http
was in the past)
• New extensions?
• XEP-666 for set top boxes? ;-)
• XEP for Conferencing?