Exploring XMPP
description
Transcript of Exploring XMPP
![Page 1: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/1.jpg)
<exploring:xmpp/>Jack Moffitt
![Page 2: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/2.jpg)
Why XMPP?
![Page 3: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/3.jpg)
HTTP APIs are great
![Page 4: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/4.jpg)
HTTP polling sucks
![Page 5: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/5.jpg)
Real time is different
![Page 6: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/6.jpg)
XMPP is real time
![Page 7: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/7.jpg)
XMPP basics
![Page 8: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/8.jpg)
XMPP network
![Page 9: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/9.jpg)
![Page 10: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/10.jpg)
![Page 11: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/11.jpg)
![Page 12: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/12.jpg)
![Page 13: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/13.jpg)
XMPP addressing
![Page 14: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/14.jpg)
example.com
![Page 19: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/19.jpg)
XMPP protocol
![Page 20: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/20.jpg)
XML
![Page 21: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/21.jpg)
XML streams
![Page 22: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/22.jpg)
XML stanzas
![Page 23: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/23.jpg)
<message/>
![Page 24: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/24.jpg)
<presence/>
![Page 25: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/25.jpg)
<iq/>
![Page 26: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/26.jpg)
<message/>
![Page 27: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/27.jpg)
<messagefrom=’[email protected]/home’to=’[email protected]’type=’chat’>
<body>Wherefore art thou, Romeo?
</body></message>
![Page 28: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/28.jpg)
<messagefrom=’[email protected]/home’to=’[email protected]’type=’chat’>
<body>Wherefore art thou, Romeo?
</body></message>
![Page 29: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/29.jpg)
<messagefrom=’[email protected]/home’to=’[email protected]’type=’chat’>
<body>Wherefore art thou, Romeo?
</body></message>
![Page 30: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/30.jpg)
<messagefrom=’[email protected]/home’to=’[email protected]’type=’chat’>
<body>Wherefore art thou, Romeo?
</body></message>
![Page 31: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/31.jpg)
<messagefrom=’[email protected]/home’to=’[email protected]’type=’chat’>
<body>Wherefore art thou, Romeo?
</body></message>
![Page 32: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/32.jpg)
<presence/>
![Page 33: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/33.jpg)
<presence><show>away</show><status>At Codebits</status>
</presence>
![Page 34: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/34.jpg)
<presencetype=’available’>
<show>away</show><status>At Codebits</status>
</presence>
![Page 35: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/35.jpg)
<presencetype=’available’>
<show>away</show><status>At Codebits</status>
</presence>
![Page 36: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/36.jpg)
<presencetype=’available’>
<show>away</show><status>At Codebits</status>
</presence>
![Page 37: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/37.jpg)
<iq/>
![Page 38: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/38.jpg)
<iqto=’sapo.pt’type=’get’id=’disco:1’>
<query xmlns=’disco#info’/></iq>
![Page 39: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/39.jpg)
<iqto=’sapo.pt’type=’get’id=’disco:1’>
<query xmlns=’disco#info’/></iq>
![Page 40: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/40.jpg)
<iqto=’sapo.pt’type=’get’id=’disco:1’>
<query xmlns=’disco#info’/></iq>
![Page 41: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/41.jpg)
<iqto=’sapo.pt’type=’get’id=’disco:1’>
<query xmlns=’disco#info’/></iq>
![Page 42: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/42.jpg)
<iqto=’sapo.pt’type=’get’id=’disco:1’>
<query xmlns=’disco#info’/></iq>
![Page 43: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/43.jpg)
<iqto=’[email protected]/home’from=’sapo.pt’type=’result’id=’disco:1’>
<query xmlns=’disco#info’><identity category='server' type='im'
name='ejabberd'/><feature var='vcard-temp'/>
</query></iq>
![Page 44: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/44.jpg)
<iqto=’[email protected]/home’from=’sapo.pt’type=’result’id=’disco:1’>
<query xmlns=’disco#info’><identity category='server' type='im'
name='ejabberd'/><feature var='vcard-temp'/>
</query></iq>
![Page 45: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/45.jpg)
<iqto=’[email protected]/home’from=’sapo.pt’type=’result’id=’disco:1’>
<query xmlns=’disco#info’><identity category='server' type='im'
name='ejabberd'/><feature var='vcard-temp'/>
</query></iq>
![Page 46: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/46.jpg)
<iqto=’[email protected]/home’from=’sapo.pt’type=’result’id=’disco:1’>
<query xmlns=’disco#info’><identity category='server'type='im'name='ejabberd'/>
<feature var='vcard-temp'/></query>
</iq>
![Page 47: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/47.jpg)
The application
![Page 48: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/48.jpg)
example
![Page 49: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/49.jpg)
contrived
![Page 50: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/50.jpg)
Server monitoring
![Page 51: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/51.jpg)
Goodbye SNMP
![Page 52: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/52.jpg)
XMPP APIs
![Page 53: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/53.jpg)
Features
![Page 54: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/54.jpg)
Collection hub
![Page 55: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/55.jpg)
Collectors are XMPP bots
![Page 56: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/56.jpg)
Controlled via client
![Page 57: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/57.jpg)
Presence
![Page 58: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/58.jpg)
Discovery
![Page 59: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/59.jpg)
Commands
![Page 60: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/60.jpg)
Notification
![Page 61: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/61.jpg)
No processing
![Page 62: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/62.jpg)
Presence
![Page 63: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/63.jpg)
Communicates status
![Page 64: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/64.jpg)
Subscribing
![Page 65: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/65.jpg)
<presence type=’subscribe’ to=’[email protected]’/>
![Page 66: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/66.jpg)
<presence type=’subscribed’ from=’xmpp@mon...’ to=’client@mon...’/>
![Page 67: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/67.jpg)
Rosters
![Page 68: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/68.jpg)
<iq type=’get’ id=’roster1’> <query xmlns=’jabber:iq:roster’/></iq>
![Page 69: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/69.jpg)
<iq type=’result’ id=’roster1’> <query xmlns=’jabber:iq:roster’> <item jid=’xmpp@mon...’ subscription=’to’/> </query></iq>
![Page 70: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/70.jpg)
Initial presence
![Page 71: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/71.jpg)
<presence/>
![Page 72: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/72.jpg)
Starting up
![Page 73: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/73.jpg)
<presence from=’xmpp@mon...’/>
![Page 74: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/74.jpg)
Dead server
![Page 75: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/75.jpg)
<presence type=’unavailable’ from=’xmpp@mon...’/>
![Page 76: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/76.jpg)
Busy server
![Page 77: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/77.jpg)
<presence type=’available’> <show>away</show> <status> Overloaded. Can’t take more jobs. </status></presence>
![Page 78: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/78.jpg)
Discovery
![Page 79: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/79.jpg)
Meta information
![Page 80: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/80.jpg)
Disco info
![Page 81: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/81.jpg)
<iq id=’disco1’ type=’get’ to=’xmpp@mon...’> <query xmlns=’.../disco#info’/></iq>
![Page 82: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/82.jpg)
<iq ...> <query xmlns=’.../disco#info’> <identity name=’XMPP Monitor’ category=’monitor’ type=’server’/> </query></iq>
![Page 83: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/83.jpg)
Statistics available
![Page 84: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/84.jpg)
Disco items
![Page 85: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/85.jpg)
<iq id=’disco2’ type=’get’ to=’xmpp@mon...’> <query xmlns=’.../disco#items’/></iq>
![Page 86: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/86.jpg)
<iq ...> <query xmlns=’.../disco#items’> <item name=’CPU Load’ jid=’xmpp@mon...’ node=’cpu’/> ... </query></iq>
![Page 87: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/87.jpg)
<iq ...> <query xmlns=’.../disco#items’> <item name=’CPU Load’ jid=’xmpp@mon...’ node=’cpu’/> ... </query></iq>
![Page 88: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/88.jpg)
<iq ...> <query xmlns=’.../disco#items’> <item name=’CPU Load’ jid=’xmpp@mon...’ node=’cpu’/> ... </query></iq>
![Page 89: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/89.jpg)
Gathering statistics
![Page 90: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/90.jpg)
Disco info again
![Page 91: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/91.jpg)
With a node
![Page 92: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/92.jpg)
<iq id=’disco3’ type=’get’ to=’xmpp@mon...’> <query xmlns=’.../disco#info’ node=’cpu’/></iq>
![Page 93: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/93.jpg)
<iq ...> <query xmlns=’.../disco#info’ node=’cpu’> <statisic xmlns=’codebits’ name=’5-min’ value=’0.4’/> </query></iq>
![Page 94: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/94.jpg)
<statistic/>
![Page 95: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/95.jpg)
Extended stanza
![Page 96: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/96.jpg)
Create your own
![Page 97: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/97.jpg)
Namespace
![Page 98: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/98.jpg)
<iq ...> <query xmlns=’.../disco#info’ node=’cpu’> <statisic xmlns=’codebits’ name=’5-min’ value=’0.4’/> </query></iq>
![Page 99: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/99.jpg)
Commands
![Page 100: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/100.jpg)
Ad-hoc commands
![Page 101: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/101.jpg)
RPC
![Page 102: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/102.jpg)
Input and output
![Page 103: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/103.jpg)
Data forms
![Page 104: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/104.jpg)
<x xmlns='jabber:x:data' type='...'> <field type='hidden' var='FORM_TYPE'> <value>jabber:bot</value> </field> <field type='text-single' var='botname'> <value>Awesome Bot</value> </field></x>
![Page 105: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/105.jpg)
<x xmlns='jabber:x:data' type='...'> <field type='hidden' var='FORM_TYPE'> <value>jabber:bot</value> </field> <field type='text-single' var='botname'> <value>Awesome Bot</value> </field></x>
![Page 106: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/106.jpg)
<x xmlns='jabber:x:data' type='...'> <field type='hidden' var='FORM_TYPE'> <value>jabber:bot</value> </field> <field type='text-single' var='botname'> <value>Awesome Bot</value> </field></x>
![Page 107: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/107.jpg)
<x xmlns='jabber:x:data' type='...'> <field type='hidden' var='FORM_TYPE'> <value>jabber:bot</value> </field> <field type='text-single' var='botname'> <value>Awesome Bot</value> </field></x>
![Page 108: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/108.jpg)
<x xmlns='jabber:x:data' type='...'> <field type='hidden' var='FORM_TYPE'> <value>jabber:bot</value> </field> <field type='text-single' var='botname'> <value>Awesome Bot</value> </field></x>
![Page 109: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/109.jpg)
Reboot command
![Page 110: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/110.jpg)
<iq ...> <command xmlns=’.../commands’ node=’reboot’ action=’execute’/></iq>
![Page 111: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/111.jpg)
<iq ...> <command xmlns=’.../commands’ node=’reboot’ action=’execute’/></iq>
![Page 112: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/112.jpg)
<iq ...> <command xmlns=’.../commands’ node=’reboot’ action=’execute’/></iq>
![Page 113: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/113.jpg)
<iq ...> <command xmlns=’.../commands’ node=’reboot’ status=’completed’/></iq>
![Page 114: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/114.jpg)
Stats reset
![Page 115: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/115.jpg)
Shell commands
![Page 116: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/116.jpg)
Notifications
![Page 117: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/117.jpg)
Important events
![Page 118: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/118.jpg)
Limits exceeded
![Page 119: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/119.jpg)
Publish subscribe
![Page 120: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/120.jpg)
Pubsub
![Page 121: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/121.jpg)
Nodes
![Page 122: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/122.jpg)
Node hierarchy
![Page 123: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/123.jpg)
Leaves
![Page 124: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/124.jpg)
Collections
![Page 125: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/125.jpg)
Bots publish
![Page 126: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/126.jpg)
Client subscribes
![Page 127: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/127.jpg)
PEP
![Page 128: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/128.jpg)
Personal eventing protocol
![Page 129: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/129.jpg)
Profile of pubsub
![Page 130: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/130.jpg)
Simple
![Page 131: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/131.jpg)
Presence
![Page 132: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/132.jpg)
Every JID is a pubsub node
![Page 133: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/133.jpg)
Subscriptions are automatic
![Page 134: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/134.jpg)
Publishing
![Page 135: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/135.jpg)
<iq ...> <pubsub xmlns=’.../pubsub’> <publish node=’codebits’> <item> <rebooted xmlns=’codebits’/> </item> </publish> </pubsub></iq>
![Page 136: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/136.jpg)
<iq ...> <pubsub xmlns=’.../pubsub’> <publish node=’codebits’> <item> <rebooted xmlns=’codebits’/> </item> </publish> </pubsub></iq>
![Page 137: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/137.jpg)
<iq ...> <pubsub xmlns=’.../pubsub’> <publish node=’codebits’> <item> <rebooted xmlns=’codebits’/> </item> </publish> </pubsub></iq>
![Page 138: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/138.jpg)
<iq ...> <pubsub xmlns=’.../pubsub’> <publish node=’codebits’> <item> <rebooted xmlns=’codebits’/> </item> </publish> </pubsub></iq>
![Page 139: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/139.jpg)
<iq ...> <pubsub xmlns=’.../pubsub’> <publish node=’codebits’> <item> <rebooted xmlns=’codebits’/> </item> </publish> </pubsub></iq>
![Page 140: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/140.jpg)
Subscribing
![Page 141: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/141.jpg)
Automatic
![Page 142: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/142.jpg)
Entity capabilities
![Page 143: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/143.jpg)
Caps
![Page 144: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/144.jpg)
Caps extend presence
![Page 145: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/145.jpg)
<presence> <c xmlns=’.../caps’ node=’codebits’ hash=’sha-1’ ver=’...hash...’/></presence>
![Page 146: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/146.jpg)
<presence> <c xmlns=’.../caps’ node=’codebits’ hash=’sha-1’ ver=’...hash...’/></presence>
![Page 147: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/147.jpg)
<presence> <c xmlns=’.../caps’ node=’codebits’ hash=’sha-1’ ver=’...hash...’/></presence>
![Page 148: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/148.jpg)
Interpreted via disco
![Page 149: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/149.jpg)
<feature var=’codebits’/><feature var=’codebits+notify’/>
![Page 150: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/150.jpg)
Events
![Page 151: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/151.jpg)
<message ...> <event xmlns=’.../pubsub’> <items node=’codebits’> <item> <rebooted xmlns=’codebits’/> </item> </items> </event></message>
![Page 152: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/152.jpg)
Just add code
![Page 153: Exploring XMPP](https://reader033.fdocuments.us/reader033/viewer/2022042513/548549c1b4af9f640d8b4da5/html5/thumbnails/153.jpg)
http://www.xmpp.org
http://metajack.im