mqtt - MQTT 代理如何与客户端(显示设备或任何输出设备)通信
问题描述
MQTT 协议适用于 pub-sub 概念。客户端可以订阅和发布主题到代理。传感器类的客户可以将各自的主题(温度、湿度、开关请求等)发布到 Broker。Broker 会将相应的数据发送给订阅的客户端(显示设备,可以打开和关闭的任何设备)。经纪人通常托管在开放的互联网上。
我不明白 Broker 将如何将信息发送到客户端设备,因为通常无法从开放 Internet 访问 wifi 连接设备,因为不会为此类 IoT 设备分配公共 IP。(我的意思是说从开放互联网到物联网设备的 IP 通信不应该成功)
解决方案
到代理的连接是从客户端到代理建立的,因为这是一个出站连接,就任何家庭路由器/NAT 设备而言,它可以正常工作(就像 Web 浏览器打开到HTTP 服务器)。
连接也是持久的,这意味着客户端打开它并在客户端的生命周期内保持打开状态。这意味着代理总是有一个打开的连接来将消息转发给客户端。
代理在任何时候都不会尝试连接到客户端。
推荐阅读
- javascript - 在哪里添加 Angular 6 中的页面特定脚本?
- php - mysql:基于一张表对其他连接表值求和
- hyperledger-fabric - 如何在 Hyperledger Fabric 中更改通道策略
- python - asyncio 和 aiohttp“无法连接到主机”
- android - 如何从网络时间协议获取当前时间?
- python-2.7 - 如何使用 pyspark 在 hbase 中创建表?
- java - JGiven本地化介绍词
- r - 悬停时突出显示组中的所有值
- ruby - 在 rspec 中配置期望
- cobol - COBOL:当两者都有返回码 10 时,如何区分文件结尾和垃圾值?