gpt4 book ai didi

c - Paho mqtt 客户端失去连接

转载 作者:行者123 更新时间:2023-11-30 16:30:18 28 4
gpt4 key购买 nike

我对 paho mqtt 库有一个小问题。我注册了回调函数 MQTTClient_messageArrived 和 MQTTClient_connectionLost。

我在此回调函数中调用 MQTTClient_subscribe() 或 MQTTClient_unsubscribe()。运行此回调函数后。我从 MQTTClient_connectionLost 收到错误代码 (-3)。此外,我打印的原因是NULL。

我的问题有什么可能的问题吗?谢谢

这是我的初始化函数和回调函数:

void mqtt_initialize(void){
int rc;

MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;

if(MQTTClient_create(&g_MQTT_client, BROKER_ADDR, CLIENTID, MQTTCLIENT_PERSISTENCE_NONE, NULL) < 0){
g_mqtt_exist = MQTT_INSTANCE_NOT_EXIST;
} else {
g_mqtt_exist = MQTT_INSTANCE_EXIST;
}

conn_opts.keepAliveInterval = 20;
conn_opts.cleansession = 1;

MQTTClient_setCallbacks(g_MQTT_client, NULL, mqtt_connlost_cb, mqtt_arrived_cb, mqtt_delivered_cb);

if ((rc = MQTTClient_connect(g_MQTT_client, &conn_opts)) != MQTTCLIENT_SUCCESS) {
MAIN_PRINT_DEBUG(0, "Failed to connect MQTT broker, return code %d\n", rc);
mqtt_free();
}

/* set subscribe control topic */
MQTTClient_subscribe(g_MQTT_client, "topic_1", MQTT_QOS);
}


int mqtt_arrived_cb(void *context, char *topicName, int topicLen, MQTTClient_message *message)
{
int ret = 0;
printf("topic: %s\n", topicName);
if(!strcmp(topicName, "topic_1")){
printf("topic_1\n");
ret = MQTTClient_subscribe(g_MQTT_client, "topic_2", 0);
if (ret < 0){
printf("mqtt operation fail\n");
}
}
return 1;

}

void mqtt_connlost_cb(void *context, char *cause)
{
MAIN_PRINT_DEBUG(0, "\n MQTT Connection lost\n");
MAIN_PRINT_DEBUG(0," cause: %s\n", cause);
}

最佳答案

您是否尝试将任何其他客户端连接到具有相同客户端 ID 的同一代理?如果您失去连接,这可能是一种情况。另外,如果您的回调抛出异常,则会导致连接丢失,但在这种情况下,paho 将重新连接。

关于c - Paho mqtt 客户端失去连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51237879/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com