MQTT 客户端同时发布和订阅

MQTT Client Publish and Subscribe at the same time

我是 MQTT 的新手,我有一些问题希望你们能帮助我。我正在做一个学校项目,该项目需要我使用 MQTT 协议,并且该程序需要用 C 语言编写。(只是一些背景信息)

  1. MQTT 客户端可以同时是发布者和订阅者吗?也就是说,在不断等待从代理接收消息并执行结果操作的同时,它还能够在需要时向代理发布消息。

    我对 MQTT 的理解是:MQTT 发布者 --> MQTT Broker --> MQTT 订阅者

  2. MQTT 的异步模式究竟是什么?

谢谢!

1) 是的,MQTT 客户端没有理由不能是发布者和订阅者,这是客户端工作的正常模式。

2) 异步 MQTT 客户端实现是一种在执行网络操作(发送或接收数据)时不会阻塞的实现。这意味着所有网络操作都在后台进行,从通常会阻塞的任何调用返回一个令牌,可用于稍后检查该操作是否成功。

1) 当您说您的 mqtt 客户端已订阅特定主题时,这意味着它将继续收听该主题,直到取消订阅或连接终止。当您说您的 mqtt 客户端正在发布时,它会将 MqttMessage 发布到 Broker,所有订阅的客户端(即监听)都会收到该消息。因此,您只需要订阅并开始发布即可。

2)异步模式不会阻塞执行任何操作的线程。它仅作用于给定的操作和 returns 可用于跟踪和等待操作完成的标记。这与同步模式相反,在同步模式中线程被阻塞直到操作完成达到超时时间。

例如:当您以异步模式发布时,您将返回一个 IMqttDeliveryToken,稍后可以使用它来验证发布操作是否已完成。