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
120
Smart servers platform
lviana
0
140
Piwik Web Analytics
lviana
0
110
Large Scale LDAP Deployment
lviana
2
490
Other Decks in Technology
See All in Technology
Janus
bkuhlmann
1
490
VS CodeでAWSを操作しよう
smt7174
8
1.8k
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
260
Gradle Build Scanを使ってビルドのことを知ろう potatotips #87
tomorrowkey
2
120
Azureの基本的な権限管理の勉強会
yhana
0
1.2k
ChatworkのSRE部って実は 半分くらいPlatform Engineering部かもしれない
saramune
0
160
LangSmith入門―トレース/評価/プロンプト管理などを担うLLMアプリ開発プラットフォーム
os1ma
4
450
Python と Snowflake はズッ友だょ!~ Snowflake の Python 関連機能をふりかえる ~
__allllllllez__
1
130
JAWS-UG Bedrock Claude Night
yamahiro
3
630
複雑な構成要素を持つUIとの向き合い方 〜新・支出グラフでの実例〜 / B43 TECH TALK
nakamuuu
0
140
Além do else! Categorizando Pokemóns com Pattern Matching no JavaScript
wmsbill
0
650
MLOpsの「壁」を乗り越える、LINEヤフーの Data Quality as Code
lycorptech_jp
PRO
6
550
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
260
12k
The Language of Interfaces
destraynor
151
23k
For a Future-Friendly Web
brad_frost
172
9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
2
3.4k
Code Review Best Practice
trishagee
55
15k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
116
18k
Building Flexible Design Systems
yeseniaperezcruz
319
37k
Building a Scalable Design System with Sketch
lauravandoore
456
32k
Bash Introduction
62gerente
604
210k
The Art of Programming - Codeland 2020
erikaheidi
42
12k
Optimizing for Happiness
mojombo
370
69k
In The Pink: A Labor of Love
frogandcode
138
21k
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?