我正在尝试执行这段代码以连接到 AWS 端点并使用 mosquitto 库发布消息:
void connecAndPublishtToAWS(const std::string &endpoint,
uint16_t port,
const std::string &cafile,
const std::string &certfile,
const std::string &keyfile,
const std::string &topic,
const std::string &message)
{
// Initialize library.
mosquitto_lib_init();
mosquitto *handler = mosquitto_new(endpoint.c_str(), true, nullptr);
mosquitto_loop_start(handler);
// Connect to endpoint.
handler->setIntegerOption(mosq_opt_t::MOSQ_OPT_TLS_USE_OS_CERTS, 1U);
mosquitto_tls_set(handler, cafile.c_str(), nullptr, certfile.c_str(), keyfile.c_str(), nullptr);
mosquitto_connect(handler, endpoint.c_str(), port, 10U);
// Publish to topic.
uint8_t times = 100;
while(times)
{
mosquitto_publish(handler, nullptr, topic.c_str(), message.size(),
message.c_str(), 2U, false);
::sleep(1u);
--times;
}
// Close the library.
mosquitto_loop_stop(handler, true);
mosquitto_destroy(handler);
mosquitto_lib_cleanup();
}
似乎它已连接(在我的真实代码中,我检查了返回码以检查连接或发布期间是否发生任何错误,并且连接期间没有问题)。
但是,当发布消息时,AWS 代理中没有收到这些消息(经过一些尝试,连接似乎关闭了,因为publish
函数返回错误 4 - MOSQ_ERR_NO_CONN
-)。
我还尝试使用 CLI 命令mosquitto_pub
(
知道我做错了什么吗?