Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
XMPP Overview
Search
Luiz Viana
July 26, 2012
Technology
1
190
XMPP Overview
Extensible messaging and presence protocol overview.
Luiz Viana
July 26, 2012
Tweet
Share
More Decks by Luiz Viana
See All by Luiz Viana
Introduction to Linux Control Groups
lviana
2
130
Smart servers platform
lviana
0
140
Piwik Web Analytics
lviana
0
120
Large Scale LDAP Deployment
lviana
2
500
Other Decks in Technology
See All in Technology
自動テストの世界に、この5年間で起きたこと
autifyhq
10
8.1k
バックエンドエンジニアのためのフロントエンド入門 #devsumiC
panda_program
16
7k
表現を育てる
kiyou77
1
200
トラシューアニマルになろう ~開発者だからこそできる、安定したサービス作りの秘訣~
jacopen
2
1.8k
Developer Summit 2025 [14-D-1] Yuki Hattori
yuhattor
19
5.8k
リアルタイム分析データベースで実現する SQLベースのオブザーバビリティ
mikimatsumoto
0
1.2k
2.5Dモデルのすべて
yu4u
2
790
Platform Engineeringは自由のめまい
nwiizo
4
2k
Tech Blogを書きやすい環境づくり
lycorptech_jp
PRO
1
230
『AWS Distinguished Engineerに学ぶ リトライの技術』 #ARC403/Marc Brooker on Try again: The tools and techniques behind resilient systems
quiver
0
140
Datadogとともにオブザーバビリティを布教しよう
mego2221
0
130
インフラをつくるとはどういうことなのか、 あるいはPlatform Engineeringについて
nwiizo
5
2.4k
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
31
2.1k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
Embracing the Ebb and Flow
colly
84
4.6k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
Automating Front-end Workflow
addyosmani
1367
200k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
550
Transcript
XMPP: Messaging Protocol? Luiz Viana <
[email protected]
> July 26, 2012 -
Locaweb Engineering Team
But... XMPP or Jabber?
Who uses it? ✔ Google ✔ Facebook ✔ Cisco ✔
Siemens ✔ Locaweb ✔ Microsoft ! And lots of new users every day...
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)
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)
C2S Connections
S2S Connections
XMPP Gateway / Transport
XMPP Addressing mycompany.com
XMPP Addressing
[email protected]
XMPP Addressing
[email protected]
/office
XML Streams <message from='
[email protected]
/Office' to='
[email protected]
' type='chat'> <body> Hello! </body> </message>
What about presence? <presence type='away'> <show>away</show> <status>Find me at the
bar</status> </presence>
Query / Response Interface <iq to='moo.ac' type='get' id='disco:l'> <query xmlns='disco#info'/>
</iq>
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>
What about security? • TLS security is mandatory • Federation
• OTR ? [ I don't think so... ]
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
But, how can I extend this? • Adding new child
XML elements • Be sure that both sides understand it • Do it yourself!
XEP Series • XMPP Extension Protocol • Can be public
or private • Based on RFC's • Submits are welcome! :)
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) ...
Well Known Open Source Servers • Apache Vysper • Djabberd
• Jabberd / Jabberd2 • Ejabberd • Openfire / Wildfire • Tigase
Popular XMPP Clients • Pigdin • Adium • Psi •
Empathy • Instantbird • OneTeam • Spark • Trillian
Now... Some cool stuff!
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!) ...
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!
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/
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...
Tip: Instead of writing your own lib... Pick one and
improve it! Probably somebody is working on it
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
Now some public and cool xmpp providers...
• 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
And some cool xmpp based apps as well...
Remember The Milk: http://www.rememberthemilk.com Tweet.im: http://www.tweet.im Jappix Project: http://jappix.org DuckDuckGo
Search: http://ddg.gg Speeqe Chat Rooms: http://www.speeqe.com/
Questions?