HTTP based feeds:

Integrated XMPP, pubsub service

Separate XMPP, pubsub service
<message from="ralphm@jaiku.com" to="stpeter@twitter.com">
<event xmlns="http://jabber.org/protocol/pubsub#event">
<items node='b4a50f3a-6a85-4c8a-b359-7d41d52c99be'>
<item id='ab7704b8-cb17-4eab-965c-1f434ef5a95d'>
...
</item>
<items>
<event>
<message>
<item id='ab7704b8-cb17-4eab-965c-1f434ef5a95d'>
<entry xmlns='http://www.w3.org/2005/Atom'>
<title>Explaining talking social networks
at XTech 2008</title>
<id>tag:jaiku.com,2006:presence/18111517<id>
<link>http://ralphm.jaiku.com/presence/18111517</link>
<updated>2008-05-08T14:58:09+01:00</updated>
</entry>
</item>
<atom:content/>Comments
Finding by auto-discovery (on http://ralphm.jaiku.com/):
<link rel='alternate' type='application/xml'
href='xmpp:ralphm@jaiku.com?;node=
b4a50f3a-6a85-4c8a-b359-7d41d52c99be'/>
Service discovery for items on JID
<iq from='stpeter@twitter.com' to='ralphm@jaiku.com'
type='get' id='info1'>
<query xmlns='http://jabber.org/protocol/disco#info'
node='b4a50f3a-6a85-4c8a-b359-7d41d52c99be'/>
</iq>
<iq from='ralphm@jaiku.com' to='stpeter@twitter.com'
type='result' id='info1'>
<query xmlns='http://jabber.org/protocol/disco#info'
node='b4a50f3a-6a85-4c8a-b359-7d41d52c99be'>
<identity category='pubsub' type='leaf'/>
<feature var='http://jabber.org/protocol/pubsub'/>
<x xmlns='jabber:x:data' type='result'>
<field var='FORM_TYPE' type='hidden'>
<value>http://jabber.org/protocol/pubsub#meta-data</value>
</field>
<field var='pubsub#type' label='Payload type'>
<value>http://www.w3.org/2005/Atom</value>
</field>
<field var='pubsub#title' label='A short name for the node'>
<value>Ralph's Jaikus</value>
</field>
<field var='pubsub#creation_date' label='Creation date'>
<value>2003-07-29T22:56Z</value>
</field>
<field var='pubsub#creator' label='Node creator'>
<value>ralphm@jaiku.com</value>
</field>
...
</x>
</query>
</iq>
The user has entered the JID of the contact directly:
<iq from='stpeter@twitter.com' to='ralphm@jaiku.com'
type='get' id='info2'>
<query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>
<iq from='ralphm@jaiku.com to='stpeter@twitter.com'
type='result' id='info2'>
<query xmlns='http://jabber.org/protocol/disco#info'>
<identity category='account' type='registered'/>
<identity category='pubsub' type='collection'/>
...
</query>
</iq>
The user has entered the JID of the contact directly:
<iq from='stpeter@twitter.com' to='ralphm@jaiku.com'
type='get' id='items1'>
<query xmlns='http://jabber.org/protocol/disco#items'/>
</iq>
<iq from='ralphm@jaiku.com to='stpeter@twitter.com'
type='result' id='items1'>
<query xmlns='http://jabber.org/protocol/disco#items'>
<item jid='ralphm@jaiku.com'
node='b4a50f3a-6a85-4c8a-b359-7d41d52c99be'/>
...
</query>
</iq>
<iq from='stpeter@twitter.com' to='ralphm@jaiku.com'
type='set' id='sub1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<subscribe node='b4a50f3a-6a85-4c8a-b359-7d41d52c99be'
jid='stpeter@twitter.com'/>
</pubsub>
</iq>
<iq from='ralphm@jaiku.com' to='stpeter@twitter.com'
type='result' id='sub1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<subscription node='b4a50f3a-6a85-4c8a-b359-7d41d52c99be'
jid='stpeter@twitter.com' subscription='subscribed'/>
</pubsub>
</iq>
<iq from='ralphm@jaiku.com' to='stpeter@twitter.com'
type='error' id='sub1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<subscribe node='b4a50f3a-6a85-4c8a-b359-7d41d52c99be'
jid='stpeter@twitter.com'/>
</pubsub>
<error type='auth'>
<not-authorized xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
<not-in-roster-group xmlns='http://jabber.org/protocol/pubsub#errors'/>
</error>
</iq>
What if I can't do XMPP?
Publish-subscribe (XEP-0060)
<iq from='ralphm@ik.nu/Home' to='ralphm@jaiku.com'
type='set' id='pub1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<publish node='b4a50f3a-6a85-4c8a-b359-7d41d52c99be'>
<item>
...
</item>
</publish>
</pubsub>
</iq>
...
<item>
<entry xmlns='http://www.w3.org/2005/Atom'>
<title>Explaining talking social networks
at XTech 2008</title>
<id>urn:uuid:ab7704b8-cb17-4eab-965c-1f434ef5a95d<id>
<updated>2008-05-08T14:58:09+01:00</updated>
</entry>
</item>
...