怎样通过基于Egg.js的应用程序接受EMQ X的设备数据?
问题描述
我想通过egg.js框架构建一个物联网应用程序,EMQ X为broker。其中一个重要步骤就是接收设备的运行状态、发布的信息等数据。借助插件emqx_web_hook来实现。于是我尝试以下操作:
1.修改emqx_web_hook.conf文件中URLweb.hook.api.url = http://127.0.0.1:7001/web_hook
2.重启插件(实际上也执行了重启emq x)
3.在egg.js框架中设立了一个路由router.post('/web_hook',controller.demo.create);
4.在controller层接收一下接口传进来的数据
async create() {
console.log('运行');
const { ctx } = this;
console.log('信息', ctx);
// ctx.body = await ctx.service.demo.create(ctx.request.body);
}
5.将egg跑起来,运行在127.0.0.1:7001端口
6.利用MQTT X模拟设备上下线、发布等事件
但是接口没有收到数据。
问题出现的环境背景及自己尝试过哪些方法
- EMQ X的版本是4.0.5
- post接口用postman测试过了是可以的
你期待的结果是什么?实际看到的错误信息又是什么?
我想知道基于egg.js框架我应该怎样去接受设备事件?我在上面罗列的步骤中逻辑正确吗?代码正确吗?还是说逻辑和代码都有错误?
非常感谢围观和建议!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题解决了,是这样的我在第二个步骤中尝试过重启EMQ X服务,也尝试过在Dashboard的插件中停止和启动emqx_web_hook。但是官方声明的方法是在终端执行:
emqx_ctl plugins reload emqx_web_hook
我尝试了一下,然后重启了一个egg的程序,就能够接到传来的数据了。
*以上只是解决接口收不到信息的问题,但不保证对工具使用的理解是对的,欢迎大佬路过指出问题或者提出建议。
*感谢来自EMQ X官方群的技术支持