MQTT 如何充当双向通信

问题描述 投票:0回答:1

我不太擅长网络主题,从我在网上阅读的内容来看,我了解到MQTT是建立在TCP之上的双向通信,但在客户端-服务器架构中总是客户端只能发起通信,但服务器无法发起与客户端的通信。所以我的大问题是,如果设备订阅了某个主题,MQTT 代理如何发起与该特定设备的通信?

订阅主题的设备是否定期连接 MQTT Broker,查看是否有订阅主题可用的消息或 MQTT Broker 可以直接发起与设备的通信。

client-server mqtt
1个回答
0
投票

客户端和服务器的角色在规范中列出。客户端“打开到服务器的网络连接”,而服务器“接受来自客户端的网络连接”,所以你是正确的(服务器不会发起到客户端的连接)。

如果设备订阅了某个主题,MQTT 代理如何发起与该特定设备的通信?

简单的答案 - 不能。

如果客户端有活动连接,服务器可以使用它来传输消息。客户端维护与服务器的连接、连接丢失时重新连接以及发送“Keep Alive”消息是很常见的。维护连接的成本并且建立新连接不是免费的,因此在许多情况下这是一个不错的选择。 MQTT 通过

会话

处理断开连接的客户端。基本上,服务器将存储有关客户端订阅的信息,并且如果收到任何匹配的消息,则将这些消息添加到会话状态。当客户端重新连接时,将传输等待消息。请注意,订阅必须满足一系列条件才能在客户端断开连接后继续存在(这在协议的 V3 和 V5 之间有所不同)。

© www.soinside.com 2019 - 2024. All rights reserved.