UNPKG

fox-wamp

Version:

Web Application Message Router/Server WAMP/MQTT

68 lines (55 loc) 1.69 kB
// AUTOBAHN_DEBUG = true; const autobahn = require('autobahn') const program = require('commander') program .option('-s, --server <server>', 'Server URI address', 'ws://127.0.0.1:9000/wamp') .parse(process.argv) console.log('connect to server:', program.server) var user = 'joe' var key = 'joe-secret' // this callback is fired during authentication function onchallenge (session, method, extra) { if (method === 'ticket') { return key } else if (method === 'wampcra') { return autobahn.auth_cra.sign(key, extra.challenge) } else { throw Error("don't know how to authenticate using '" + method + "'") } } var connection = new autobahn.Connection({ url: program.server, realm: 'realm1', authmethods: ['ticket', 'wampcra'], authid: user, tlsConfiguration: {}, onchallenge: onchallenge }) const msgCount = 100000 connection.onopen = function (session, details) { session.log("Session open.") var starttime = Date.now() var res = [] for (var i=0; i<msgCount; i++) { res.push(session.publish('com.myapp.topic1', [], {field1:'some long value', field2:12345}, { acknowledge : true }).then( function(publication) { // console.log("published:", publication); }, function(error) { console.log("publication error", error) return Promise.resolve(true) } )) } // when progressive call and acknowledge publish done Promise.all(res).then(function () { console.log('total rec/sec:', msgCount/(Date.now() - starttime)*1000 ) connection.close() }) } connection.onclose = function (reason, details) { console.log("close connection:", reason, details) } connection.open()