如何在React Native中使用Paho正常断开连接?

时间:2019-07-23 07:32:11

标签: reactjs native mqtt paho

我需要使用https://www.npmjs.com/package/react-native-paho-mqtt处理与蚊子经纪人的正常断开连接,为此,我想在实际断开连接之前向该代理发送“断开连接”消息。

鉴于该库提供的客户端中似乎没有send()函数的回调,我如何知道消息已发送,并且仅在发生这种情况时才断开客户端连接?目前,仅当我注释掉断开连接行时才收到消息,这意味着断开连接发生在发送消息之前。

我当时正在考虑使用setTimeout,但这真的是最好的方法吗?

  const message = new Message(JSON.stringify({payload: 'offline'}));
  message.qos = 2;
  message.destinationName = 'connection/1';
  client.send(message);
  client.disconnect() // <-- if I comment this line out, the message is received

1 个答案:

答案 0 :(得分:1)

问题是因为您正试图在断开连接之前向QOS2发送消息。

QOS2消息与代理进行3种握手,以确保代理正确确认了该消息,这需要多个低级消息来回传递,并且Paho库在后台对其进行异步处理。通过在调用send之后立即调用断开连接,您将在完成此握手之前关闭MQTT客户端。

您可以使用onMessageDelivered()回调函数确定邮件何时传递。参见文档here