dpaw-qweb-app
Version:
Simple viewer app to interface with QGIS/monorail
58 lines (49 loc) • 1.6 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;
let Obs = Rx.Observable;
function makeRelayDriver(opts) {
let relay = Object.create(Relay);
let relayOpts = {
baseAddr: "wss://brocket.dpaw.wa.gov.au",
channel: 'dendrite',
appID: 'qgis',
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('Subscriber received msg ', msg));
relay.connect();
relay.on('pub/open', () => {
relay.dispatch({tag: 'wrapped', payload: {tag: 'unwrapped', payload: ['message']}});
log('Pub channel open');
});
function relayDriver(outgoing$) {
outgoing$.subscribe( msg => relay.dispatch(msg) );
let incoming$ = relay.message$
.do(msg => log('RelayDriver.incoming: prefilter <- msg is ', msg))
.filter( msg => !u.isUndefined(msg))
.do(msg => log('RelayDriver.incoming: postfilter -> msg is ', msg))
.share();
let incoming2$ = Obs.interval(5000)
.map(() => ({tag: 'beat', payload: {msg: 'dadum'}}));
let incoming3$ = Obs.interval(5000)
.map(() => ("{\"tag\": \"beat\", \"payload\": {msg: \"dadum\"}}"));
log('Leaving relayDriver');
return incoming$;
}
return relayDriver;
}
function transfer(msg) {
return msg;
}
module.exports = makeRelayDriver;