Издатель Mosquitto не публикует ни одного сообщения - PullRequest
0 голосов
/ 30 апреля 2018

Я пытался разработать код на C, используя mosquitto lib для публикации сообщений на брокере mosquitto через TLS. Я настроил TLS на стороне комара, и он работал нормально. Мне удалось отправлять и получать сообщения, используя mosquitto_pub и mosquitto_sub.

Однако, когда я попытался опубликовать сообщение, используя мой код C, оно не работает. Видимо, код подключается нормально и отправляет сообщение, ошибки нет, но подписчик ничего не читает.

Ниже приведен код издателя, который я использую:

ReportSender::ReportSender()
{
    mosquitto_lib_init();

    mosquitoStruct = mosquitto_new (NULL, true, NULL);

    mosquitto_tls_opts_set(mosquitoStruct, 1, NULL, NULL);

    mosquitto_tls_set(mosquitoStruct, "~/temp/keys/secondAttempt/server.crt", NULL, NULL, NULL, NULL);

    mosquitto_tls_insecure_set(mosquitoStruct, false);

    mosquitto_connect_callback_set(mosquitoStruct, connect_cb);
    mosquitto_publish_callback_set(mosquitoStruct, publish_cb);
    mosquitto_log_callback_set(mosquitoStruct, log_cb);

    mosquitto_connect (mosquitoStruct, MQTT_BROKER, MQTT_PORT, 0);

    const char *reportRef = "Hello Word!";

    // Publish the message to the topic
    mosquitto_publish (mosquitoStruct, NULL, MQTT_TOPIC,
              strlen(reportRef), reportRef, 0, false);

    sleep (20);
}

А подписчик:

mosquitto_sub -h 192.168.56.101 -p 8883 -t "#" -v --cafile server.crt

Что не так?

Спасибо, Mauro

1 Ответ

0 голосов
/ 30 апреля 2018

Обратите внимание на набор функций loop * (), они необходимы для обработки фонового сетевого трафика. publish () не является блокирующим вызовом.

...