通过WebSocket连接AWS MQTT实现传感器数据多用户访问的方案咨询
可用落地方案如下:
方案1:复用AWS IoT Core原生WebSocket能力(最低改造成本)
你已使用的AWS MQTT Broker(AWS IoT Core)原生支持WebSocket协议的MQTT连接,无需额外部署中间件:
- 给实验室成员分配最小权限的AWS IoT访问凭证,仅开放传感器数据对应topic的订阅权限,禁止其他操作权限
- 前端直接调用
aws-iot-device-sdk-js工具包,通过WebSocket连接AWS IoT Core端点,订阅对应topic即可实时获取传感器数据 - 历史数据可直接调用你现有Web服务器的接口从已同步的数据库中拉取,全程无需触碰本地Node Red服务
方案2:现有Web服务扩展WebSocket模块(最贴合现有架构)
基于你已经搭建的「MQTT Broker->数据库->Web服务器」同步链路,直接在现有Web服务上扩展轻量WebSocket功能即可:
- 若你的Web服务基于Node.js开发,引入
socket.io依赖,仅需数十行代码即可完成WebSocket服务部署 - 在Web服务器后台运行一个独立的MQTT客户端脚本,订阅AWS MQTT Broker的传感器数据topic,收到新数据后主动通过WebSocket推送给所有已连接的前端用户
- 所有访问入口均走你现有公开Web服务,可自行添加账号密码等权限校验逻辑,完全符合安全要求
方案3:Node Red增加安全控制后开放(最小开发成本)
如果不想修改现有业务逻辑,仅需给本地Node Red增加访问控制即可解决公网开放的安全顾虑:
- 开启Node Red原生的
adminAuth配置项,启用自带的用户登录体系,给实验室成员分配独立账号,仅开放dashboard查看权限,禁止流修改权限 - 可额外在Node Red前部署Nginx反向代理,进一步开启HTTP Basic Auth双重校验,若实验室成员均在内网/VPN环境下,可直接限制仅内网网段可访问,完全不暴露到公网
- 该方案无需额外开发业务代码,仅需配置即可落地,耗时不超过半天
内容的提问来源于stack exchange,提问作者Jae Hong Lee
相关产品推荐
相关产品推荐

