Skip to content

Instantly share code, notes, and snippets.

@yoavniran
Last active August 29, 2015 14:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yoavniran/a199e69785a3cd71feb4 to your computer and use it in GitHub Desktop.
Save yoavniran/a199e69785a3cd71feb4 to your computer and use it in GitHub Desktop.
a simple pub/sub class for node with support for scopes
var scopedVenter = require("./Venter").get("my_scope");
//trigger an event
scopedVenter.emit("something:happened", {"message": "hello"});
//listen to event
scopedVenter.on("something:happened", function(data){
console.log(data.message);
});
/**
*
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*
* SEE MY venter NPM PACKAGE - https://www.npmjs.org/package/venter
* OR REPOSITORY ON GITHUB - https://github.com/yoavniran/node-venter
*
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*/
var util = require("util"),
events = require("events");
var Venter = function (scope) {
events.EventEmitter.call(this);
this.scope = scope;
};
util.inherits(Venter, events.EventEmitter); //inherit Event Emitter methods
var VenterRegister = (function () {
var venters = {};
return function (scope) {
var venter = venters[scope];
if (venter) {
return venter;
}
venter = new Venter(scope);
venters[scope] = venter;
return venter;
};
})();
module.exports.create = Venter; //create a venter on its own
module.exports.get = VenterRegister; //get(create) a venter in a specific scope
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment