Mqtt消息传递时用户将联机



是否可以使用mqtt+mosquitto(或任何像rabbitmq-redis这样的经纪人(来代替FCM进行推送通知

让我们假设我们使用的是mqtt+mosquito。

我正在解释我需要的场景:

用户A正在向用户B发送消息,但用户1B联机时,都应通知他挂起的消息。

如何使用broker实现此场景

MQTT有一个"持久会话"的概念。第一次连接时,客户端会在连接数据包中向代理发送一个名为"干净会话"的标志。通过将此标志设置为false,客户要求经纪人"记住我"。

然后,如果客户端断开连接或失去连接,代理将为客户端保留消息,直到下次重新连接,并按照收到的顺序将消息发送给客户端。

在MQTT中,每个客户端都需要有一个唯一的"ClientID"。这就是代理在重新连接时识别客户端的方式。客户端在第一次连接时使用订阅来告诉代理它想要什么消息,然后代理记住该客户端的订阅列表以及与这些订阅匹配的所有消息。

因此,对于您的场景,客户端B需要与持久会话连接一次,然后之后,代理将在断开连接时为其保留消息。

最新更新