| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #! /usr/bin/env node
- const mqtt = require('mqtt')
- const convertHrtime = require('convert-hrtime')
- const mode = require('compute-mode')
- const client = mqtt.connect({ port: 1883, host: 'localhost', clean: true, keepalive: 0 })
- const interval = 5000
- let sent = 0
- const latencies = []
- function count () {
- console.log('sent/s', sent / interval * 1000)
- sent = 0
- }
- setInterval(count, interval)
- function publish () {
- sent++
- client.publish('test', JSON.stringify(process.hrtime()), { qos: 1 })
- }
- function subscribe () {
- client.subscribe('test', { qos: 1 }, publish)
- }
- client.on('connect', subscribe)
- client.on('message', publish)
- client.on('message', function (topic, payload) {
- const sentAt = JSON.parse(payload)
- const diff = process.hrtime(sentAt)
- latencies.push(convertHrtime(diff).ms)
- })
- client.on('offline', function () {
- console.log('offline')
- })
- client.on('error', function () {
- console.log('reconnect!')
- client.stream.end()
- })
- process.on('SIGINT', function () {
- const total = latencies.reduce(function (acc, num) {
- return acc + num
- })
- console.log('total', total)
- console.log('average', total / latencies.length)
- console.log('mode', mode(latencies))
- process.exit(0)
- })
|