Upgrade to Pro — share decks privately, control downloads, hide ads and more …

XMPP Overview

XMPP Overview

Extensible messaging and presence protocol overview.

Luiz Viana

July 26, 2012
Tweet

More Decks by Luiz Viana

Other Decks in Technology

Transcript

  1. Who uses it? ✔ Google ✔ Facebook ✔ Cisco ✔

    Siemens ✔ Locaweb ✔ Microsoft ! And lots of new users every day...
  2. Extensible Messaging and Presence Protocol • Open XML Technology •

    RFC 3920 ,RFC 3921 (+ lots of extensions) • XMPP Standards Foundation (XSF) Real-time communication (I didn't say chat)
  3. Protocol Characteristics • Extensible (XML based) • Distributed (Server to

    server connections) • Interoperability (Transparent communication) • Simplicity (Generic bus of data transfer) • Mature (More than 10 years old)
  4. Query / Response Interface <iq to='[email protected]' from='moo.ac' type='result' id='disco:l'> <query

    xmlns='disco#info'> <identity category='server' type='im' name='ejabberd'/> <feature var='vcard-temp'/> </query> </iq>
  5. Federation? • Every user has it's own Jabber ID (JID)

    • Every connection get a different resource • Domains find each other using SRV entries • S2S and C2S connections use TLS
  6. But, how can I extend this? • Adding new child

    XML elements • Be sure that both sides understand it • Do it yourself!
  7. XEP Series • XMPP Extension Protocol • Can be public

    or private • Based on RFC's • Submits are welcome! :)
  8. Common Extensions • Last Activity (XEP-0012) • Service Discovery (XEP-0030)

    • Multi User Chat (XEP-0045) • Ad-Hoc Commands (XEP-0050) • Publish-Subscribe (XEP-0060) • User Avatar (XEP-0084) • Personal Eventing Protocol (XEP-0163) ...
  9. Well Known Open Source Servers • Apache Vysper • Djabberd

    • Jabberd / Jabberd2 • Ejabberd • Openfire / Wildfire • Tigase
  10. Popular XMPP Clients • Pigdin • Adium • Psi •

    Empathy • Instantbird • OneTeam • Spark • Trillian
  11. Bots • Real time notification systems • Interact with servers

    • Interact with applications • Build command line interfaces • Read your e-mail, twitter... • Search the web (DuckDuckGo rocks!) ...
  12. Multi user chats (MUC's) • Conference room management • Allow

    temporary virtual chat creation • Store transcriptions, logs... • Use of moderation, invites, kicks... • HTTP interaction is possible!
  13. XMPP Transports • Connect with non-xmpp messengers • Keep connected

    on IRC channels • Control im accounts from a central one • Keep your legacy accounts online (Y!, AIM...) Microsoft is now on xmpp \o/
  14. Multimedia Chats • Jingle nodes extension (XEP-0278) • P2P media

    relays (RTP) • Audio and video support • Try it on Google+! Remember: Your client must be compatible...
  15. Tip: Instead of writing your own lib... Pick one and

    improve it! Probably somebody is working on it
  16. Some cool libraries... • Python: SleekXMPP, Twisted, Xmpppy • Ruby:

    Blather, Babylon, xmpp4R • Erlang: exmpp • JavaScript: strophe.js, jaxmpp2 • C / C++: Strophe, Swiften Most of the languages already have libraries... Even Mono, Lua, Haskell and Go :P
  17. • Google Talk: http://google.com/talk • Facebook Chat: http://facebook.com • Jabber.org:

    http://jabber.org • Talkr.im: http://www.talkr.im • DuckDuckGo: http://duckduckgo.com • Include.io: http://talk.include.io