Возникли проблемы с подключением к моему брокеру mqtt с помощью CocoaMQTT - PullRequest
0 голосов
/ 11 июля 2019

Я создаю одно приложение для iOS, связывающееся с Mqtt-брокером, в основном для публикации сообщений. Но когда я пытаюсь соединиться с брокером, используя библиотеку CocoaMQTT, это всегда дает мне ошибку в соединении.

Я пытаюсь использовать последнюю версию CocoaMQTT, а также версию 1.1.3. Но оба терпят неудачу в соединении и дают мне ошибку

(Ошибка домена = kCFStreamErrorDomainNetDB Code = 8 "nodename или servname предоставлен или неизвестен "UserInfo = {NSLocalizedDescription = имя узла или имя сервера указано или не известно})

 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. Я пробовал 2-3 Mqtt платных приложения с моего iPhone, чтобы подключиться к деталям брокера, но никто не смог подключить его.

Но те же настройки работают нормально в приложении для Android. (он использует net.igenius: mqttservice: 1.6.4) (этот брокер не требует аутентификации)

1 Ответ

1 голос
/ 11 июля 2019

Как показано в CocoaMQTT doc , запись host в методе init должна быть просто именем хоста, а не 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...