概述
MQTT X 是由寰球当先的 开源物联网中间件 提供商 EMQ 开源的一款跨平台 MQTT 5.0 桌面测试客户端,它反对 macOS,Linux,Windows。MQTT X 的用户界面借助聊天软件的模式简化了页面的操作逻辑,用户能够疾速创立多个同时在线的 MQTT 客户端,不便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连贯 / 公布 / 订阅性能及其他 MQTT 协定 个性。
MQTT X 网站:https://mqttx.app/cn/
MQTT X v1.4.2 版本下载:https://github.com/emqx/MQTTX…
Mac 用户可在 App Store 中进行下载:https://apps.apple.com/cn/app…
Linux 用户可在 Snapcraft 中进行下载:https://snapcraft.io/mqttx
脚本性能
MQTT X 在 v1.4.2 版本后,退出了脚本性能 ,提供了让用户编辑脚本对 MQTT 连贯中,发送和接管的 Payload
进行自定义转化的性能。可用来模仿自定义测试场。次要编写的脚本语言为 JavaScript。下文将简略的介绍两个简略的测试实例场景来对脚本性能进行介绍, 需注意:在 v1.4.2 版本中脚本性能属于开放性测试性能,应用流程、安全性和功能性还需后续持续优化晋升和欠缺。 也欢送各位用户到 MQTT X 的 GitHub issue 区进行具体探讨,咱们将会认真审阅和回复。
在编辑脚本性能中,全局只蕴含了一个 execute
API,用户须要编写一个自定义函数,该函数接管一个 value
参数,即为 Payload
, 函数中便可对 value
进行自定义批改转化,最初将该函数作为参数传入到 execute
中即可执行自定义编写的函数。
实例一
配合定时发送性能模仿温湿度数据上报。
例如,当用户应用 EMQ X 时,须要应用规定引擎性能将数据保留到数据库。这时能够在配置实现后,应用 MQTT X 连贯到 EMQ X,并应用脚本性能对其进行测试。这里假如用户须要保留上报的温湿度数据,且数据格式为 JSON 类型,咱们能够应用上面的脚本对数据进行模仿。
/**
* Simulated temperature and humidity reporting
* @return Return a simulated temperature and humidity JSON data - {"temperature": 23, "humidity": 40}
* @param value, MQTT Payload - {}
*/
function random(min, max) {return Math.round(Math.random() * (max - min)) + min
}
function handlePayload(value) {
let _value = value
if (typeof value === 'string') {_value = JSON.parse(value)
}
_value.temperature = random(10, 30)
_value.humidity = random(20, 40)
return JSON.stringify(_value, null, 2)
}
execute(handlePayload)
此时可将这段代码复制到脚本页面的代码编辑框内,点击右上角的 保留
按钮,设置脚本名称为 TempAndHum 并保留。咱们在 Input 输入框内输出一个 {}
作为初始数据。点击 测试
按钮,在 Output 框内查看执行后果,如果后果合乎预期,接下来将能够失常应用该脚本。
咱们应用 EMQ X 提供的 收费公共 MQTT 服务器 新建一个连贯,该服务基于 EMQ X 的 MQTT 物联网云平台 创立。服务器接入信息如下:
- Broker: broker.emqx.io
- TCP Port: 1883
- Websocket Port: 8083
连贯胜利后,点击右上角的下拉性能菜单,抉择 应用脚本
,在弹出窗中,抉择方才保留好的 TempAndHum 脚本,而后抉择利用类型为发送时,点击确认按钮后开启脚本性能。
开启脚本后,咱们再持续设置定时发送性能,同样点击右上角的下拉性能菜单,抉择 定时音讯
,这里咱们设置发送频率为 1 秒,点击确认后定时音讯性能开启。
筹备好后,便能够输出初始的 Payload
和须要发送到的Topic
,点击发送胜利一条音讯后,便能够看到 MQTT X 将每秒主动发送了一次模仿数据。
这样防止了用户去手动输出和批改数据的麻烦,且应用脚本时模仿数据可控,模仿数据区间可在脚本的 random
函数中设定,如果有对保留的数据进行可视化图表测试需要或须要增加肯定的数据量的数据来测试时,都较为不便和敌对。
实例二
将接管到的 Payload
中的工夫戳转化为失常工夫。
在一些测试场景中,用户测试接管到的 Payload
内可能会蕴含工夫戳信息,如果须要察看和测试对工夫较为敏感的数据,可能须要复制出数据,再将工夫戳转化工夫,较为麻烦。此时能够应用脚本对接管到的数据进行主动转化,不便用户察看数据信息。咱们能够应用上面的脚本对数据进行转化。仍然假如接管到的数据为 JSON 类型,并且蕴含了 time 字段。
/**
* Convert timestamp to normal time.
* @return Return the UTC time - {"time": "2020-12-17 14:18:07"}
* @param value, MQTT Payload - {"time": 1608185887}
*/
function handleTimestamp(value) {
let _value = value
if (typeof value === 'string') {_value = JSON.parse(value)
}
// East Eight District needs an additional 8 hours
const date = new Date(_value.time * 1000 + 8 * 3600 * 1000)
_value.time = date.toJSON().substr(0, 19).replace('T', ' ')
return JSON.stringify(_value, null, 2)
}
execute(handleTimestamp)
此时可将这段代码复制到脚本页面的代码编辑框内,点击右上角的 保留
按钮,设置脚本名称为 Time 并保留。咱们在 Input 输入框内输出一个 {"time": 1608365158}
作为初始数据。点击 测试
按钮,在 Output 框内查看执行后果,如果后果合乎预期,接下来将能够失常应用该脚本。
此时咱们仍然新建一个连贯,应用上述中形容的办法来开启脚本。留神抉择利用类型时,须要抉择为接管时。
脚本性能开启后,咱们增加一个 testtopic/time
的 Topic
,而后咱们向该 Topic
发送一条蕴含工夫戳信息的 Payload
。而后查看接管到的 Payload
信息,能够看到曾经主动帮工夫戳转化为了失常工夫。
总结
至此,咱们实现了 MQTT X 的脚本实例应用的教程。该性能具备肯定的扩展性和灵活性,需用户配合理论需要来进行应用。脚本应用实例可在 GitHub 仓库的 /docs/script-example 文件夹中查看,目前提供了两个内置脚本,工夫戳转化和温湿度数据模仿。如果在您的应用中有更好的,更实用的脚本也能够提交您的代码到这里,不便让更多的人应用到。
该我的项目齐全开源,您能够到 GitHub 来提交应用过程中遇到的问题,或是 Fork MQTT X 我的项目向咱们提交批改后的 PR,咱们将会及时查阅和解决。也特此感激社区中所有用户的奉献和反馈。
版权申明:本文为 EMQ 原创,转载请注明出处。
原文链接:https://www.emqx.cn/blog/mqttx-script-function-tutorial