【问题标题】:Having problem connecting to my mqtt broker using CocoaMQTT使用 CocoaMQTT 连接到我的 mqtt 代理时出现问题
【发布时间】:2019-11-20 19:01:19
【问题描述】:

我正在制作一个 iOS 应用程序与 Mqtt 代理通信,主要是发布消息。但是当我尝试使用 CocoaMQTT 库与代理连接时,它总是给我连接错误。

我正在尝试使用 CocoaMQTT 最新版本和 1.1.3 版本。但是两者都连接失败并给我错误

(Error Domain=kCFStreamErrorDomainNetDB Code=8 "nodename or servname 提供,或未知” UserInfo={NSLocalizedDescription=nodename nor servname 提供,或未知})

 formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS"
    let dateString = formatter.string(from: date)
    let clientID = "smart-curtain-"+dateString
mqttClient = CocoaMQTT.init(clientID: clientID, host: 
    contantData.MQTT_BROKER_URL, port: UInt16(1883))
        mqttClient.username = nil
        mqttClient.password = nil
        mqttClient.autoReconnect = true
        mqttClient.allowUntrustCACertificate = true
        mqttClient.keepAlive = 60
       mqttClient.enableSSL = false

所以它总是以mqttDidDisconnect 委托方法结束。我的代理 url 是 tcp://xyz.com(xyz 只是示例),端口是 1883。我已经尝试从我的 iPhone 上使用 2-3 个 Mqtt 收费应用程序来连接代理详细信息,但没有人能够连接它。

但相同的设置在 Android 应用中运行良好。 (它使用的是 net.igenius:mqttservice:1.6.4)(这个代理不需要认证)

【问题讨论】:

    标签: ios swift mqtt


    【解决方案1】:
        var session = CocoaMQTT.init(clientID: "user1", host: "xx.xx.xxx.xx", port: 1883)
        session.allowUntrustCACertificate = true
    

    不需要像在android中那样发送tcp://xx.xx.xxx.xx:port,你可以通过分别删除tcp://和端口号来传递xx.xx.xxx.xx。

    【讨论】:

      【解决方案2】:

      如 CocoaMQTT doc 所示,init 方法中的 host 条目应该只是主机名,而不是 URI:

      let clientID = "CocoaMQTT-" + String(NSProcessInfo().processIdentifier)
      let mqtt = CocoaMQTT(clientID: clientID, host: "localhost", port: 1883)
      mqtt.username = "test"
      mqtt.password = "public"
      mqtt.willMessage = CocoaMQTTWill(topic: "/will", message: "dieout")
      mqtt.keepAlive = 60
      mqtt.delegate = self
      mqtt.connect()
      

      例如应该是xyz.com 而不是tcp://xyz.com

      【讨论】:

      • 谢谢伙计!,我的愚蠢错误是写 tcp:// 不需要那个。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      • 2018-05-21
      • 2015-07-17
      • 2021-10-21
      相关资源
      最近更新 更多