Version0 /
eventbus ModuleThis module provides an interface to the Vert.x event bus, which supports a peer-to-peer publish-and-subscribe network on a local area network. Upon in invoking the VertxBus constructor in this module, the host running this module participates in the pub-sub network. The pub-sub network extends as far as multicast packets extend in the local-area network, and other participants will be automatically discovered. Hence, you can publish events on the local network or subscribe to events on the local network using this module. Events are published with an address, which is an arbitrary string that identifies the event or stream of events. This address could indicate the topic of message. A network or service using this pub-sub mechanism should develop a convention for these addresses to minimize accidental name collisions. For example, a sensor might publish sensor data using an address like 'org.terraswarm.sensor.accelerometer.onShoe'. The published data can be any JavaScript object that has a string JSON representation (using JSON.stringify()). If the host has more than one network interface (e.g. WiFi and wired), then the one to use can be specified by name as an optional argument to the constructor. You can also specify the port to use, though if you do, then you are responsible for avoiding port collisions. The default network interface used is whichever one is represented by 'localhost'. The default port is an arbitrary unused port. See also the auto-generated doc file for the current version of the Ptolemy II/Nashorn host implementation of this module. FunctionsThe following functions are implemented by this module:
UsageUse this as follows: var eventbus = require('eventbus'); var bus = new eventbus.VertxBus(); bus.subscribe('topic'); bus.on('topic', function(msg) { print(msg); } ); bus.publish('topic', {'hello':'world'}); This creates an interface to the event bus, subscribes to events with address 'topic', provides a handler for such events, and publishes a single event to that same address. The result should be to print: {'hello':'world'} on the standard output. This implementation uses the event emitter pattern common in JavaScript. Once you have subscribed to an address, you can specify any number of handlers as follows: bus.on(address, function); To give a handler that reacts only to exactly one event with this address, use bus.once(address, function); To unsubscribe to an address, use bus.unsubscribe(address); To unsubscribe to all addresses, use bus.unsubscribe(); In addition, this module supports point-to-point communication, which sends an event to exactly one subscriber, chosen in a approximately round-robin fashion. To send to exactly one subscriber, instead of publish use send, as follows: bus.send('topic', {'hello':'world'}); When sending a point-to-point message, it is possible to get a reply from the recipient. The recipient (which also uses this module) should set the reply message as follows: bus.setReply('confirmed'); where 'confirmed' can be replaced with any string. The sender can then specify a handler to receive the reply as follows: bus.send('topic', {'hello':'world'}, handler); where handler is a function that takes one argument, the reply string. Resources
Back to Optional JavaScript Modules |