当我在服务器断开连接后尝试重新连接 MQTT 时、返回-2005错误。
void ics_mqtt_connect_timer(sigval val)
{
/* Clear the timer interrupt. */
Platform_TimerInterruptClear();
if (mqtt_connect_pending)
{
mqtt_connect_timer_cntr++;
mqtt_connect_pending = 0;
}
}
void ics_mqtt_process()
{
// Handle reconnect of the MQTT process.
static uint8_t prevConnected = 0;
int32_t ret = 0;
if (deviceConnected)
{
if (mqtt_connect_pending == 0)
{
if (prevConnected)
{
ret = MQTT_IF_Disconnect(globalmqttClientHandle);
ret = MQTT_IF_Deinit(globalmqttClientHandle);
}
ret = MQTT_IF_Init(mqttInitParams);
if (ret >= 0)
{
char subscribeTopic[64];
ics_mqtt_build_topic(subscribeTopic, MQTT_SUB_TOPIC_NAME_SERVER);
ret = MQTT_IF_Subscribe(globalmqttClientHandle, subscribeTopic, MQTT_QOS_2, ics_mqtt_server_events_callback);
globalmqttClientHandle = MQTT_IF_Connect(mqttClientParams, mqttConnParams, MQTT_EventCallback);
mqtt_connect_pending = 1;
prevConnected = 1;
// set one minute timeout for retries.
Platform_TimerStart(180000, gMqttTimer, 0);
}
}
}
usleep(10000);
}