Skip to content

Instantly share code, notes, and snippets.

@fideloper
Created May 3, 2012 19:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save fideloper/2588662 to your computer and use it in GitHub Desktop.
Save fideloper/2588662 to your computer and use it in GitHub Desktop.
PubSub Example
/*
See it in action: http://jsbin.com/iyinux/edit#javascript,html,live
Also Fun: http://jsbin.com/oyanih/7/edit#javascript,html,live
Better Fun: http://jsbin.com/uhakaw/34/edit#javascript,html,live
*/
/*
EXAMPLE USE OF JAVASCRIPT PUBSUB -
https://github.com/mroderick/PubSubJS
*************************************************************/
/*
Conveniently global for demo
This is assigned PubSub object after JS file is loaded
*************************************************************/
var pubber = false;
/*
Messengers send and receive messages
**************************************************************************/
var messenger1 = {
token: false,
message: '',
receive: function(mssg,data) {
console.log('Messender 1 received:',data);
},
send: function() {
console.log('Messender 1 sending:','Messenger 1 message');
pubber.publish('mssg', 'Messenger 1 message');
}
};
var messenger2 = {
token: false,
message: '',
receive: function(mssg, data) {
console.log('Messender 2 received:',data);
},
send: function() {
console.log('Messender 2 sending:','Messenger 2 message');
pubber.publish('mssg', 'Messenger 2 message');
}
};
/*
App controller to demo PubSub
**************************************************************************/
var app = {
init: function(Pubber) {
messenger1.token = Pubber.subscribe('mssg', messenger1.receive);
messenger2.token = Pubber.subscribe('mssg', messenger2.receive);
},
rollThisJoint: function() {
messenger1.send();
messenger2.send();
}
};
/*
Handle loading PubSub JS Asynchronously because of how JSBin works.
**************************************************************************/
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.onload = function() {
pubber = PubSub;
app.init(PubSub);
app.rollThisJoint();
};
ga.src = 'https://raw.github.com/mroderick/PubSubJS/master/src/pubsub.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment