Я использую библиотеку mqtt node.js для подключения к интернет-сервису mqtt.
var name = '/#';
var mqttclient = mqtt.createClient(1883, service.getHost(),{username:"" ,password: service.getKey() });
mqttclient.on('connect', function onConnect(){
winston.info('MQTT Connected'.green, '/'+service.getPattern()+name);
mqttclient.subscribe('/'+service.getPattern()+name);
mqttclient.on('message', handleMessage);
});
mqttclient.on('disconnect', onConnect);
mqttclient.on('close', onClose);
mqttclient.on('error', onError);
function onDisconnect(packet){
winston.info('MQTT MONITOR disconnect!'+packet);
}
function onClose(packet){
winston.info('MQTT MONITOR close!'+packet);
}
function onError(err){
winston.error('MQTT MONITORerror!'+err);
}
когда мое интернет-соединение отключается или имя пользователя/пароль для аутентификации неверно, библиотека mqtt будет генерировать событие закрытия, пока mqtt.end(), это событие будет постоянно запускаться.
2013-12-07T18:36:53.835Z - info: MQTT MONITOR close!false
2013-12-07T18:36:54.835Z - info: MQTT MONITOR close!false
2013-12-07T18:36:55.832Z - info: MQTT MONITOR close!false
2013-12-07T18:36:56.833Z - info: MQTT MONITOR close!false
2013-12-07T18:36:57.831Z - info: MQTT MONITOR close!false
2013-12-07T18:36:58.847Z - info: MQTT MONITOR close!false
2013-12-07T18:36:59.842Z - info: MQTT MONITOR close!false
2013-12-07T18:37:00.833Z - info: MQTT MONITOR close!false
2013-12-07T18:37:01.832Z - info: MQTT MONITOR close!false
2013-12-07T18:37:02.847Z - info: MQTT MONITOR close!false
мне кажется, что обратный вызов mqtt close не может сказать мне, какая ошибка происходит, например, ошибка аутентификации или хост не может связаться с ошибкой.
Более того, я предполагаю, что существует стратегия повторного подключения. как я могу контролировать эту стратегию повторного подключения в коде mqtt?