怎样通过基于Egg.js的应用程序接受EMQ X的设备数据?

发布于 2022-09-12 02:54:17 字数 847 浏览 21 评论 0

问题描述

我想通过egg.js框架构建一个物联网应用程序,EMQ X为broker。其中一个重要步骤就是接收设备的运行状态、发布的信息等数据。借助插件emqx_web_hook来实现。于是我尝试以下操作:
1.修改emqx_web_hook.conf文件中URL
web.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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

独闯女儿国 2022-09-19 02:54:17

问题解决了,是这样的我在第二个步骤中尝试过重启EMQ X服务,也尝试过在Dashboard的插件中停止和启动emqx_web_hook。但是官方声明的方法是在终端执行:
emqx_ctl plugins reload emqx_web_hook
我尝试了一下,然后重启了一个egg的程序,就能够接到传来的数据了。

*以上只是解决接口收不到信息的问题,但不保证对工具使用的理解是对的,欢迎大佬路过指出问题或者提出建议。

*感谢来自EMQ X官方群的技术支持

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文