1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Improve socket error handling in MQTT client

Fixes #155
This commit is contained in:
Nick O'Leary 2014-02-20 21:53:21 +00:00
parent 58774c366d
commit f7a72a48ea

View File

@ -54,17 +54,21 @@ MQTTClient.prototype.connect = function(options) {
self.client = mqtt.createConnection(this.port,this.host,function(err,client) { self.client = mqtt.createConnection(this.port,this.host,function(err,client) {
if (err) { if (err) {
self.connected = false;
self.connectionError = true;
self.emit('connectionlost',err); self.emit('connectionlost',err);
return; return;
} }
client.on('close',function(e) { client.on('close',function(e) {
clearInterval(self.watchdog); clearInterval(self.watchdog);
if (!self.connectionError) {
if (self.connected) { if (self.connected) {
self.connected = false; self.connected = false;
self.emit('connectionlost',e); self.emit('connectionlost',e);
} else { } else {
self.emit('disconnect'); self.emit('disconnect');
} }
}
}); });
client.on('error',function(e) { client.on('error',function(e) {
clearInterval(self.watchdog); clearInterval(self.watchdog);
@ -96,6 +100,7 @@ MQTTClient.prototype.connect = function(options) {
self.lastInbound = (new Date()).getTime() self.lastInbound = (new Date()).getTime()
self.lastOutbound = (new Date()).getTime() self.lastOutbound = (new Date()).getTime()
self.connected = true; self.connected = true;
self.connectionError = false;
self.emit('connect'); self.emit('connect');
} else { } else {
self.connected = false; self.connected = false;
@ -161,6 +166,7 @@ MQTTClient.prototype.connect = function(options) {
}); });
this.lastOutbound = (new Date()).getTime() this.lastOutbound = (new Date()).getTime()
this.connectionError = false;
client.connect(self.options); client.connect(self.options);
}); });
} }