【问题标题】:M2MQTT Disconnecting from Azure IoT Hub on PublishM2MQTT 在发布时从 Azure IoT 中心断开连接
【发布时间】:2019-11-20 21:38:12
【问题描述】:

我正在尝试使用 M2MQTT 库将 MQTT 消息发送到 Azure IoT 中心。我已经按照IoT Hub MQTT support 的指导在该文章的本机 MQTT 部分中为连接等提供了正确的参数。

我连接成功(CONNACK返回值为0),代码如下:

_publishClient = new MqttClient(_hostName, 8883, true, null, null,MqttSslProtocols.TLSv1_2);
_publishClient.MqttMsgPublished += _client_MqttMsgPublished;
_publishClient.ConnectionClosed += _client_ConnectionClosed;
var connack = _publishClient.Connect(_publishDeviceId, string.Format("{0}/{1}", 
             _hostName, _publishDeviceId), _publishSas,true,3600);

但只要我进行发布调用(其中 deviceid 是我的设备 ID):

var pubresult = _publishClient.Publish("/devices/{deviceid}/messages/events/", Encoding.UTF8.GetBytes("Hello"), MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE, false);

M2MQTT 断开连接并引发 OnConnectionClosed 事件,消息永远不会传递到 Azure IoT 中心。

我尝试通过 M2MQTT MqttClient 类代码降级,断开连接来自 ReceiveThread 与 cmets 听起来像是关闭连接的 Azure IoT Hub 端:

// zero bytes read, peer gracefully closed socket
else
{
    // wake up thread that will notify connection is closing
    this.OnConnectionClosing();
}

如果有人对它关闭的原因或如何排除故障有任何想法,我会全力以赴。

【问题讨论】:

  • 我看到了同样的错误。
  • 你试过用 windows-iot-sdk 做 mqtt 客户端吗?
  • 嗨,这里的 Azure IoT SDK 团队 - 我想问一下您喜欢 m2mqtt 的哪一点,或者在我们的 SDK 中不起作用,导致您不再使用它?
  • @pierreca-MSFT 试图记住,因为这已经是差不多 2 年前的事了……要么你当时在 SDK 中没有 MQTT 支持,要么可能是客户要求使用那个图书馆,怕是想不起来了。我通常当然会使用你的 SDK。

标签: azure mqtt azure-iot-hub


【解决方案1】:

您可能希望删除发布主题字符串中的第一个“/”,而不是

var pubresult = _publishClient.Publish("/devices/{deviceid}/messages/events/", Encoding.UTF8.GetBytes("Hello"), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false);

使用

var pubresult = _publishClient.Publish("devices/{deviceid}/messages/events/", Encoding.UTF8.GetBytes("Hello"), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false);

这是page 上的建议,对我有用。

【讨论】:

    【解决方案2】:

    我没有使用 m2mqtt 库,而是 Paho C 库,我遇到了同样的问题。 直到我在用户名中指定了最近的 API 版本,才成功发布到 IoT Hub 的消息。

    在我的例子中,用户名是:<iothubname>/<deviceid>/api-version=2016-11-14

    我在这里偶然发现了这个问题及其解决方法:https://blog.baeke.info/2017/05/16/iot-hub-device-twin-and-mqtt/

    在 Microsoft 文档中找不到有关此问题的任何内容

    【讨论】:

      猜你喜欢
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-11
      相关资源
      最近更新 更多