bubpubsub

0.10.0 • Public • Published

bubPubSub

bubPubSub (VisualWeb's PubSub) is a publish/subscribe system for communication between objects/modules of your code. It's rather similar to common pubSub systems, but closer related to the event system of nodeJS or the browser. USP's are

  • (optional) BUBBLING along a topic-tree

  • (optional) PERSISTENCE of publications for later retrieval/reference

It is developed, used and sponsored by myLinkCloud (http://www.mylinkcloud.com), meinUnterricht (http://www.meinUnterricht.de), K.lab (http://www.klab-berlin.com), and ViSERiON (http://www.viserion.com) .

compatibility

bubPubSub works on both ends, the client and the server (nodeJS).

Installation with nodeJS

  $ npm install bubpubsub

Test (server-side)

cd to node_modules/bubpubsub
make

VERSION HISTORY:

- v0.8.7 22.11.12
	- introduced silent option as a per-publication flag to avoice console logging
- v0.8.6 22.11.12
	- bugFix
- v0.8.6 22.11.12
	- bugFix
- v0.8.5 19.11.12
	- bugFixes ..
- v0.8.4 15.11.12
	- bugFixes ..
	- old parameters for subscribe will be deprecated announcement
- v0.8.3 15.11.12
	- introduced autoUnsubscribe to subscribe options ! 
	- optional try-catch around subscribers
	- scope setting for subscribers
	- introduced limits for error and publication logs to 10000 items in order to limit memory usage.
- v0.82 28.07.2012
	- bugfix in chain default and if check. 
- v0.81 27.07.12
	- unsubscribe updated to do a better job of namespace (& memory) cleanup
- v0.80 22.06.12
	- added the option to do chaining. this needs quite some field-testing ;)
	- added chainDelay config setting for chained publications to allow breathing-time for the cpu 
- v0.71 15.06.12
	- made the code a bit more beautiful
	- introduced forceUniqueSubscriber to allow replacing subscriber methods by Id
	- replaced isFunction method by typeof test 
	- removed randomString method
	- switched from bad style == to good style === operators... 
	- changed licence
- v0.70 21.03.12
	- renamed
	- fused client (jQuery) and server (nodeJS) versions
	- series of bugfixes
- v0.60	29.10.11			
	- removed dependencies from jQuery. 
	- enabled using the same file for client- and nodeJS server-side implementation
	- added the reply function explicitely

Usage

there is a detailed description of all functions in the source-code ... 

examples (more in the source JS)

        // SUBSCRIPTION TO a deep branch WITHOUT PICKING UP BUBBLES 
  var myEuropeSubscription = aBubPubSub.subscribe(
  '/politics/europe', 
  function(data, currentBranch, publisher, replyCall, subscriptionIdObject) { 
  console.log('original publication branch: ' + data.originalTopic);  
                console.log('i subscribed to : ' + currentBranch);  
  replyCall('I am [' + myEuropeSubscription.id + '] and I am only interested in european politics');
  }, 
  { getBubbles: false } 
  'myEuropeSubscriber'
  );
       
       // SUBSCRIPTION TO ROOT WITH BUBBLING
        var myRootSubscription = aBubPubSub.subscribe(
  '/', 
  function(data, currentBranch, publisher, replyCall, subscriptionIdObject) { 
  console.log('original publication branch: ' + data.originalTopic);  
                console.log('i subscribed to : ' + currentBranch);  
  replyCall('I am [' + myRootSubscription.id + '] and I pick up any publication');
  }, 
  { getBubbles: true } 
  'myRootSubscriber'
  );
 
    // PUBLISH WITH PERSISTANCE AND BUBBLING
        aBubPubSub.publish(
  '/politics/europe/germany/pipa', 
  { 
  content: 'this is wonderfool',  
            },
            { 
                bubble:true, 
                persist:true 
            }, 
            'myTestPublisher1',
            function(replyCallParametersOfYourChoice) {
                console.dir(replyCallParametersOfYourChoice);
                return true;
            }
  );
        
        // PUBLISH WITH PERSISTANCE AND BUBBLING
        aBubPubSub.publish(
  '/politics/europe/germany/pipa/legislation', 
  { 
  content: 'this can not be picked up by the nonBubbler or the persistence check (below)',  
            },
            { 
                bubble:true, 
                persist:false 
            }, 
            'myTestPublisher2',
            function(replyCallParametersOfYourChoice) {
                console.dir(replyCallParametersOfYourChoice);
                return true;
            }
  );
        
        
        // PERSISTANCE
        var persistentPublicationObjectArrayOnPolitics = aBubPubSub.wasPublishedOnTopic('/politics', true);
    
        // UNSUBSCRIBE
        aBubPubSub.unsubscribe(myRootSubscription);

Package Sidebar

Install

npm i bubpubsub

Weekly Downloads

8

Version

0.10.0

License

none

Last publish

Collaborators

  • itsatony