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
180
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
110
Large Scale LDAP Deployment
lviana
2
500
Other Decks in Technology
See All in Technology
日経電子版のStoreKit2フルリニューアル
shimastripe
3
180
共創するアーキテクチャ ~チーム全体で築く持続可能な開発エコシステム~ / Co-Creating Architecture - A Sustainable Development Ecosystem Built by the Entire Team
bitkey
PRO
0
2.6k
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
300
偶有的複雑性と戦うためのアーキテクチャとチームトポロジー
knih
7
4.2k
Mastering Quickfix
daisuzu
2
380
Adopting Jetpack Compose in Your Existing Project - GDG DevFest Bangkok 2024
akexorcist
0
150
2024年のAmazon Bedrockアップデート一挙おさらい 〜まだ間に合う! re:Invent直前までの重大ニュースを速習しよう〜
minorun365
PRO
3
110
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
2.2k
Next.jsとNuxtが混在? iframeでなんとかする!
ypresto
2
2k
SAP Community and Developer Update
sygyzmundovych
0
350
OOM発生時のトラブルシューティング Profilerを活用できるか調査してみた
atsushii
0
200
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
3
730
Featured
See All Featured
Designing the Hi-DPI Web
ddemaree
280
34k
Documentation Writing (for coders)
carmenintech
65
4.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
A better future with KSS
kneath
238
17k
Designing Experiences People Love
moore
138
23k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
BBQ
matthewcrist
85
9.3k
Adopting Sorbet at Scale
ufuk
73
9.1k
Designing for Performance
lara
604
68k
Thoughts on Productivity
jonyablonski
67
4.3k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Git: the NoSQL Database
bkeepers
PRO
427
64k
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?