Colliding Worlds: Using Jabber to make awesome web sites - Blain Cook

Post on 20-Aug-2015

2.612 views 0 download

Transcript of Colliding Worlds: Using Jabber to make awesome web sites - Blain Cook

— 2000.

client——— changes?——— changes?——— changes?——— changes?—————————————————————————————————————————————————————————————— changes?——— changes?——— changes?

servercomputer says nocomputer says nocomputer says nocomputer says no

computer says yes! computer says nocomputer says nocomputer says nocomputer says nocomputer says nocomputer says nocomputer says no

computer says yes!computer says nocomputer says no computer says no

wasted effort}

• Persistent

• Lightweight

• Bi-Directional

• Asynchronous

• Guaranteed Server Identity

Connection Properties

Protocol

<message from='palin@gov.ak.us' to='joesixpack@att.com'> <body> I'm a Maverick, doncha know? </body></message>

— 2003.

<iq type='set' from='gov.palin@yahoo.com' to='bearhunter.com' id='pub1'> <pubsub xmlns='http://jabber.org/protocol/pubsub'> <subscribe node='/bears/activity' jid='gov.palin@yahoo.com'> </pubsub> </iq>

SUBSCRIBE /bears/activity HTTP/1.1Host: bearhunter.comContent-type: application/x-www-form-url-encodedContent-length: 24

from=gov.palin@yahoo.com

<iq type='set' from='gov.palin@yahoo.com' to='reality.com' id='pub1'> <pubsub xmlns='http://jabber.org/protocol/pubsub'> <unsubscribe node='/common_sense' jid='gov.palin@yahoo.com'> </pubsub> </iq>

UNSUBSCRIBE /common_sense HTTP/1.1Host: reality.comContent-type: application/x-www-form-url-encodedContent-length: 24

from=gov.palin@yahoo.com

<message to='gov.palin@yahoo.com' from='bearhunter.com' id='omgbears55'> <pubsub> <items node='/bears/activity'> <item id="1853"> Bear sighted! Get your guns!</item> </items> </pubsub> </iq>

NOTIFY /people/gov.palin HTTP/1.1Host: yahoo.comContent-type: application/x-www-form-url-encodedContent-length: 22

message=Bear sighted! Get your guns!message_id=1853&node=/bears/activity&from=bearhunter.com&to=gov.palin@yahoo.com

while (true) { $event = get_next_event() @matching_nodes = event.nodes()

@subscribers = "SELECT * FROM subscriptions WHERE node IN (@matching_nodes)"

foreach $subscriber in (@subscribers) { deliver_xmpp_notification($event, $subscriber) }}

<iq type='set' from='blaine@flickr.com' to='rhoda@facebook.com' id='pub1'> <pubsub xmlns='http://jabber.org/protocol/pubsub'> <subscribe node='/photos' jid='blaine@flickr.com'> </pubsub> </iq>

<iq type='set' from='rhoda@facebook.com' to='blaine@flickr.com' id='pub1'> <pubsub xmlns='http://jabber.org/protocol/pubsub'> <subscribe node='/photos' jid='rhoda@facebook.com'> </pubsub> </iq>

<message to='rhoda@facebook.com' from='blaine@flickr.com' id='243fa8'> <pubsub> <items node='/photos.atom'> <item id="tag:flickr.com,2005:/photo/1839786542"> <entry> <title>Pienso En Ti</title> <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/lattice/1839786542/"/> <id>tag:flickr.com,2005:/photo/1839786542</id> <published>2007-11-03T09:03:47Z</published> <updated>2007-11-03T09:03:47Z</updated> <author> <name>blaine</name> <uri>http://www.flickr.com/people/lattice/</uri> </author> <link rel="enclosure" type="image/jpeg" href="..." /> </entry> </item> </items> </pubsub> </iq>

<message to='rhoda@facebook.com' from='blaine@flickr.com' id='243fa8'> <pubsub> <items node='/photos.atom'> <item id="tag:flickr.com,2005:/photo/1839786542"> <entry> <title>Pienso En Ti</title> <link rel="alternate" type="text/html" href="http://www.flickr.com/photos/lattice/1839786542/"/> <id>tag:flickr.com,2005:/photo/1839786542</id> <published>2007-11-03T09:03:47Z</published> <updated>2007-11-03T09:03:47Z</updated> <author> <name>blaine</name> <uri>http://www.flickr.com/people/lattice/</uri> </author> <link rel="enclosure" type="image/jpeg" href="..." /> </entry> </item> </items> </pubsub> </iq>