dpaw-monorail-plugin
Version:
JS library to link the brocket network to the QGIS/monorail server
48 lines (40 loc) • 1.28 kB
JavaScript
/**
* @fileOverview
* @name relay-driver.js
* @author Gavin Coombes
* @license BSD-3-Clause
*
*/
let Rx = require('rx');
let Relay = require('dpaw-brocket-relay');
let u = require('dpaw-brocket-utility');
let log = u.log;
function makeRelayDriver(opts) {
let relay = Object.create(Relay);
let relayOpts = {
baseAddr: "wss://brocket.dpaw.wa.gov.au",
channel: 'dendrite',
appID: 'monorail',
userID: 'gavinco'
};
relay.init(relayOpts);
// relay.on('message', msg => log('monorail.plugin received msg', msg));
// relay.on('dispatch', msg => log('monorail.plugin dispatched msg', msg));
// relay.subscribe(msg => log('Monorail.plugin: Subscriber received msg ', msg));
relay.connect();
relay.on('pub/open', () => {
relay.dispatch({tag: 'wrapped', payload: {tag: 'unwrapped', payload: 'kaboom'}});
log('Pub channel open');
});
function relayDriver(outgoing$) {
outgoing$.subscribe( msg => relay.dispatch(msg) );
log('Monorail.relayDriver: has relay', relay);
let incoming$ = relay.message$
.filter( v => !u.isUndefined(v) )
.filter( msg => msg.tag.search(/beat/) < 0 ) // dont want beat
.share();
return incoming$;
}
return relayDriver;
}
module.exports = makeRelayDriver;